我有一个字符串:“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”,result
为43.0
。如何解析字符串以获得更多数字?
答案 0 :(得分:5)
包含小数的正则表达式需要更复杂一些:
\d+(\.\d+)?
然后你需要获得多个匹配:
MatchCollection mc = Regex.Matches(subjectString, "\\d+(\\.\\d+)?");
foreach (Match m in mc)
{
double d = double.Parse(m.Groups[0].Value);
}
答案 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);
}