如何使用c#提取括号中的所有字符串?

时间:2018-02-25 11:41:40

标签: c# regex split

如果我有一个字符串,如:

“你的身份是(1)而你的号码是(0000000000)”

将这些字符串提取到字符串列表中的最佳方法是什么。括号之间的数字可以增加数字,因此在括号之间搜索字符串是一种更好的技术。

我可以使用下面的代码来提取括号中的第一个字符串。

var myString = "You id is (1) and your number is (0000000000)";
var firstNumberBetweenBrackets = myString.Split('(', ')')[1]; // would return 1

2 个答案:

答案 0 :(得分:2)

这是一个LINQ解决方案:

var result = myString.Split().Where(x => x.StartsWith("(") && x.EndsWith(")")).ToList();

存储在result中的值:

result[0] = (1)
result[1] = (0000000000)

如果您只想使用不带括号的数字:

var result = myString.Split().Where(x => x.StartsWith("(") && x.EndsWith(")"))
                     .Select(x=>x.Replace("(", string.Empty).Replace(")", string.Empty))
                     .ToList();

存储在result中的值:

result[0] = 1
result[1] = 0000000000

答案 1 :(得分:2)

如果您只想在括号内获取数字串,可以使用

var results = Regex.Matches(s, @"\((\d+)\)")
    .Cast<Match>()
    .Select(m => m.Groups[1].Value)
    .ToList();

结果位于第1组,因此您需要使用m.Groups[1].Value

访问它们

正则表达式详细信息

  • \( - 匹配文字(
  • (\d+) - Capturing group 1:一个或多个(由于+量词)数字(您可以使用[0-9]代替\d来匹配ASCII数字,或使用RegexOptions.ECMAScript
  • \) - 文字)

请参阅online C# demoregex demo here

enter image description here