C# 如何在c中拆分每个括号上的字符串并将所有文本保留在一个数组中#

C# 如何在c中拆分每个括号上的字符串并将所有文本保留在一个数组中#,c#,C#,我试图将每个括号中的字符串拆分成一个数组并将所有文本保留在C#中,将所有内容都放在括号中 示例:“HMMMMMM(asdfhqwe)ASASSD” 应该变成:“hmmmmmmm”、“(asdfhqwe)”和“ASASSD” 我当前的设置是只能将所有内容放在括号内并丢弃其余部分 var output = input.Split('(', ')').Where((item, index) => index % 2 != 0).ToList(); 我将如何继续做这样的事情(不考虑我当前的代码)

我试图将每个括号中的字符串拆分成一个数组将所有文本保留在C#中,将所有内容都放在括号中

示例:“HMMMMMM(asdfhqwe)ASASSD”

应该变成:“hmmmmmmm”、“(asdfhqwe)”和“ASASSD

我当前的设置是只能将所有内容放在括号内并丢弃其余部分

var output = input.Split('(', ')').Where((item, index) => index % 2 != 0).ToList();

我将如何继续做这样的事情(不考虑我当前的代码)?

使用RERGX split,具有正面的向前看和向后看以及可选的空格;然后过滤掉空字符串

var tokens = Regex
    .Split(str, @"(?<=[)])\s*|\s*(?=[(])")
    .Where(s => s != string.Empty)
    .ToList();
var-tokens=Regex
.Split(str,@)(?试试这个:

string[] subString = myString.Split(new char[] { '(', ')' });

好的,所以我不知道在您的应用程序中真正的字符串是什么样子,但根据提供的字符串,这将是我的解决方案:

string sample = "hmmmmmmmm (asdfhqwe)asasd";
var result = sample.Replace("(", ",(").Replace(")", "),").Split(',');
所以我用逗号替换了拆分的位置,但是您可以使用字符串中可能永远不会出现的任何其他字符,比如“~”也可以使用


但是不知道所有必需的功能,这在上面的场景中是可行的。

听起来是正则表达式的一个很好的用法。只需编写一个lexer。lexer并不难编写!这给出了:hmmmmmmmm,(,asdfhqwe),assd,而不是hmmmmmmmm,(asdfhqwe),asasd@7h3w1z4rd请看一下编辑和演示。这是您在原始问题中要求的:)