假设我有一个字符串,例如123ad456
。我想制作一种将数字组分隔为列表的方法,这样输出的内容将类似于123,456
。
我尝试做return Regex.Match(str, @"-?\d+").Value;
,但是只输出第一个出现的数字,所以输出将是123
。我也知道我可以使用Regex.Matches
,但是据我所知,它将输出123456
,而不是分开不同的数字组。
我还从MSDN的this页中看到,Regex.Match
有一个重载,该重载需要string
查找匹配项,而int
作为索引搜索匹配项,但除了用于搜索正则表达式模式的参数外,没有看到上面的重载,Regex.Matches
也是如此。
我猜想使用的方法是使用某种for
循环,但是我不确定要怎么做。帮助将不胜感激。
答案 0 :(得分:2)
您只需要使用Matches
而不是Match
。然后简单地遍历所有匹配项:
string result = "";
foreach (Match match in Regex.Matches(str, @"-?\d+"))
{
result += match.result;
}
答案 1 :(得分:1)
您可以使用foreach遍历字符串数据,并使用TryParse
检查每个字符。
foreach (var item in stringData)
{
if (int.TryParse(item.ToString(), out int data))
{
// int data is contained in variable data
}
}
答案 2 :(得分:0)
使用string.Join
和Regex.Matches
的组合:
string result = string.Join(",", Regex.Matches(str, @"-?\d+").Select(m => m.Value));
string.Join
比连续追加到现有字符串的性能更好。
答案 3 :(得分:-1)
\ d +是整数的正则表达式;
// System.Text.RegularExpressions.Regex resultString = Regex.Match(subjectString,@“ \ d +”)。Value; 返回一个字符串,该字符串的第一个出现在subjectString中。
Int32.Parse(resultString)然后会给您编号。