繁体   English   中英

从字符串中提取所有数字

[英]Extract all numbers from string

假设我有一个字符串,例如123ad456 我想制作一种将数字组分成一个列表的方法,因此输出将类似于123,456

我试过做return Regex.Match(str, @"-?\\d+").Value; ,但这仅输出数字的第一次出现,因此输出将是123 我也知道我可以使用Regex.Matches ,但根据我的理解,这将输出123456 ,而不是将不同的数字组分开。

我还从 MSDN 上的这个页面看到Regex.Match有一个重载,它使用string来查找匹配项和一个int作为搜索匹配项的索引,但我没有看到一个重载上面除了要搜索的正则表达式模式的参数之外,同样适用于Regex.Matches

我想使用的方法是使用某种for循环,但我不完全确定该怎么做。 帮助将不胜感激。

所有你必须使用Matches而不是Match 然后简单地遍历所有匹配项:

string result = "";
foreach (Match match in Regex.Matches(str, @"-?\d+"))
{
    result += match.result;
}

您可以使用 foreach 遍历字符串数据并使用TryParse来检查每个字符。

foreach (var item in stringData)
{
    if (int.TryParse(item.ToString(), out int data))
    {
        // int data is contained in variable data
    }
}

使用string.JoinRegex.Matches的组合:

string result = string.Join(",", Regex.Matches(str, @"-?\d+").Select(m => m.Value));

string.Join性能比不断追加到现有字符串要好。

\\d+ 是整数的正则表达式;

//System.Text.RegularExpressions.Regex resultString = Regex.Match(subjectString, @"\\d+").Value; 返回一个字符串,其中一个数字在 subjectString 中第一次出现。

Int32.Parse(resultString) 然后会给你这个数字。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM