如果我有一个字符串,如:
“你的身份是(1)而你的号码是(0000000000)”
将这些字符串提取到字符串列表中的最佳方法是什么。括号之间的数字可以增加数字,因此在括号之间搜索字符串是一种更好的技术。
我可以使用下面的代码来提取括号中的第一个字符串。
var myString = "You id is (1) and your number is (0000000000)";
var firstNumberBetweenBrackets = myString.Split('(', ')')[1]; // would return 1
答案 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
)\)
- 文字)