如果我有一个字符串,例如:
“你的id是(1),你的号码是(0000000000)”
将这些字符串提取到字符串列表中的最佳方法是什么。括号之间的数字可以增加数字,因此搜索括号之间的字符串是一种更好的技术。
我可以使用下面的代码来提取括号之间的第一个字符串。
var myString = "You id is (1) and your number is (0000000000)";
var firstNumberBetweenBrackets = myString.Split('(', ')')[1]; // would return 1
Run Code Online (Sandbox Code Playgroud)
这是一个 LINQ 解决方案:
var result = myString.Split().Where(x => x.StartsWith("(") && x.EndsWith(")")).ToList();
Run Code Online (Sandbox Code Playgroud)
存储在 中的值result
:
result[0] = (1)
result[1] = (0000000000)
Run Code Online (Sandbox Code Playgroud)
如果您只想要没有括号的数字,请使用:
var result = myString.Split().Where(x => x.StartsWith("(") && x.EndsWith(")"))
.Select(x=>x.Replace("(", string.Empty).Replace(")", string.Empty))
.ToList();
Run Code Online (Sandbox Code Playgroud)
存储在 中的值result
:
result[0] = 1
result[1] = 0000000000
Run Code Online (Sandbox Code Playgroud)
您可以为此使用正则表达式(https://regex101.com/r/T4Sdik/1):
Regex regex = new Regex(@"\(([^()]+)\)*");
foreach (Match match in regex.Matches("You id is (1) and your number is (0000000000)")
{
Console.WriteLine(match.Value);
}
Run Code Online (Sandbox Code Playgroud)
这将打印:
1
0000000000
Run Code Online (Sandbox Code Playgroud)
如果您只想获取括号内的数字字符串,您可以使用
var results = Regex.Matches(s, @"\((\d+)\)")
.Cast<Match>()
.Select(m => m.Groups[1].Value)
.ToList();
Run Code Online (Sandbox Code Playgroud)
结果位于第 1 组中,因此您需要使用 来访问它们m.Groups[1].Value
。
正则表达式详细信息
\(
- 匹配文字(
(\d+)
-捕获组1:一个或多个(由于+
量词)数字(您可以使用[0-9]
而不是\d
仅匹配 ASCII 数字,或使用RegexOptions.ECMAScript
)\)
- 字面意思)
归档时间: |
|
查看次数: |
6456 次 |
最近记录: |