从字符串中提取所有数字 [英] Extract all numbers from string

查看:95
本文介绍了从字符串中提取所有数字的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

Let's say I have a string such as 123ad456. I want to make a method that separates the groups of numbers into a list, so then the output will be something like 123,456.

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

I've tried doing return Regex.Match(str, @"-?\d+").Value;, but that only outputs the first occurrence of a number, so the output would be 123. I also know I can use Regex.Matches, but from my understanding, that would output 123456, not separating the different groups of numbers.

我还从 this 页面,Regex.Match 有一个重载,它使用 string 来找到一个 int 作为搜索匹配项的索引,但除了要搜索的正则表达式模式的参数之外,我没有看到上面的重载,Regex 也是如此.匹配.

I also see from this page on MSDN that Regex.Match has an overload that takes the string to find a match for and an int as an index at which to search for the match, but I don't see an overload that takes in the above in addition to a parameter for the regex pattern to search for, and the same goes for Regex.Matches.

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

I guess the approach to use would be to use a for loop of some sort, but I'm not entirely sure what to do. Help would be greatly appreciated.

推荐答案

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

All you have to to use Matches instead of Match. Then simply iterate over all matches:

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

这篇关于从字符串中提取所有数字的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆