查找并提取String中的所有数字

时间:2013-12-06 11:43:33

标签: c# regex string numbers

我有一个字符串:“Hello I'm 43 years old, I need 2 burgers each for 1.99$”。 我需要解析它并将其中的所有数字都记为double。因此该函数应返回一组值,如:43, 2, 1.99。在C ++中,我应该自己编写所有内容,但C#有Regex,我认为它可能对此有所帮助:

String subjectString = "Hello I'm 43 years old, I need 2 burgers each for 1.99$";
resultString = Regex.Match(subjectString, @"\d+").Value;
double result = double.Parse(resultString);

此后,resultString为“43”,result43.0。如何解析字符串以获得更多数字?

3 个答案:

答案 0 :(得分:5)

包含小数的正则表达式需要更复杂一些:

\d+(\.\d+)?

然后你需要获得多个匹配:

MatchCollection mc = Regex.Matches(subjectString, "\\d+(\\.\\d+)?");
foreach (Match m in mc)
{
    double d = double.Parse(m.Groups[0].Value);
}

Here is an example

答案 1 :(得分:2)

尝试使用以下正则表达式:

-?[0-9]+(\.[0-9]+)?

然后使用Regex.Matches并迭代返回的匹配项。

答案 2 :(得分:1)

您应该使用Matches方法来获取匹配集合。此外,您需要在正则表达式中添加点

String subjectString = "Hello I'm 43 years old, I need 2 burgers each for 1.99$";
var matches = Regex.Matches(subjectString, @"\d+(\.\d+)?");

for (int i = 0; i < matches.Count; i++ )
{
    double d = double.Parse(matches[i].Value);
}