Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从字符串中查找并提取所有数字_C#_Regex_String_Numbers - Fatal编程技术网

C# 从字符串中查找并提取所有数字

C# 从字符串中查找并提取所有数字,c#,regex,string,numbers,C#,Regex,String,Numbers,我有这样一个字符串:“你好,我43岁了,我需要2个汉堡,每个汉堡1.99美元”。 我需要解析它,并将其中的所有数字作为double。因此,函数应该返回一个值数组,如:43,2,1.99。在C++中,我应该自己写所有的东西,但是C语言有代码>正则表达式< /代码>,我认为这里可能有帮助: String subjectString = "Hello I'm 43 years old, I need 2 burgers each for 1.99$"; resultString = Regex.Mat

我有这样一个字符串:“
你好,我43岁了,我需要2个汉堡,每个汉堡1.99美元”
。 我需要解析它,并将其中的所有数字作为
double
。因此,函数应该返回一个值数组,如:
43,2,1.99
。在C++中,我应该自己写所有的东西,但是C语言有代码>正则表达式< /代码>,我认为这里可能有帮助:

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”,而
result
43.0
。如何解析字符串以获得更多的数字?

您的正则表达式需要稍微复杂一些才能包含小数:

\d+(\.\d+)?
然后需要获得多个匹配项:

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

.

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

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

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

您应该使用
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);
}
String subjectString=“你好,我43岁了,1.99美元一个我需要2个汉堡”;
var matches=Regex.matches(subjectString,@“\d+(\。\d+)”;
for(int i=0;i
如果需要,请务必检查区域设置问题。不是每个人都使用相同的十进制分隔符。@GaussZ你是说点还是逗号?@GaussZ很好。是的,可以是点或逗号。另外,也许您还需要处理数千个分隔符?@RomanChehowsky是的。另外,通常10^3分隔符是相反的(逗号表示点十进制分隔符,反之亦然)。@GaussZ非常感谢,它工作得很好。至于我,这个问题有更完整的答案,所以做出决定。