C# 拆分字符串并选择包含两组括号的中间部分

C# 拆分字符串并选择包含两组括号的中间部分,c#,.net,string,winforms,C#,.net,String,Winforms,正如我所知,在选择字符串的一部分时,我们使用split。例如,如果node1.Text是test(delete),则选择delete string b1 = node1.Text.Split('(')[0]; 那就意味着我们已经选择了test,但是如果我想从node1.Text中选择delete,我该怎么办呢 更新: 另一个问题是,当字符串中有两组括号时,如何瞄准delete?。例如,is string是测试(2)(delete)-如果我们选择delete如果您的字符串始终是xxx(yyy)z

正如我所知,在选择字符串的一部分时,我们使用
split
。例如,如果
node1.Text
test(delete),则选择delete

string b1 = node1.Text.Split('(')[0];
那就意味着我们已经选择了
test
,但是如果我想从
node1.Text
中选择
delete
,我该怎么办呢

更新:

另一个问题是,当字符串中有两组括号时,如何瞄准
delete
?。例如,is string是
测试(2)(delete)-如果我们选择delete

如果您的字符串始终是
xxx(yyy)zzz
格式,您可以添加
字符,以便将其拆分并获得第二项,如下所示:

var s = "test (delete) if we choose delete";
string b1 = s.Split(new[] { '(', ')' })[1];
这也是可能的


使用索引
[x]
可以将分割原始字符串的字符前后的字符串部分作为目标。如果该字符出现多次,则生成的字符串将包含更多部分。

您也可以使用正则表达式,然后只需删除括号即可:

resultString = Regex.Match(yourString, @"\((.*?)\)").Value.
               Replace("(", "").Replace(")", "");
List<string> matches = new List<string>();
var result = Regex.Matches(yourString, @"\((.*?)\)");
foreach(Match x in result)
      matches.Add(x.Groups[1].Value.ToString());
或者更好:

Regex.Match(yourString, @"\((.*?)\)").Groups[1].Value;
如果要提取括号中的多个字符串:

resultString = Regex.Match(yourString, @"\((.*?)\)").Value.
               Replace("(", "").Replace(")", "");
List<string> matches = new List<string>();
var result = Regex.Matches(yourString, @"\((.*?)\)");
foreach(Match x in result)
      matches.Add(x.Groups[1].Value.ToString());
List matches=newlist();
var result=Regex.Matches(您的字符串@“\(.*?)\”);
foreach(结果中匹配x)
匹配.Add(x.Groups[1].Value.ToString());

为什么不
Regex.Match(你的字符串,@“\(.*)\)).Groups[1]。Value
,那么你就不需要删除括号了?@juharr你说得对,我编辑了我的答案。非常感谢你的回答。但如果我们有两个括号?@SaberJalilzadeh看一下我编辑的答案。非常感谢。我会选择你的答案作为接受,但它已经被标记为重复(!!??)请查看我的更新。