C# 从字符串中提取数字
我需要从如下字符串中获取所有数字:C# 从字符串中提取数字,c#,regex,C#,Regex,我需要从如下字符串中获取所有数字: "156234 something 567345 another thing 45789 anything" 结果应为具有以下特征的数字集合: 156234, 567345, 45789 我尝试了@“\d+”,但它只会给我156234 编辑:数字是整数,但是它们也可以像“156234某物567345某物45789某物2345”这样出现。在这种情况下,我只需要整数,即156234、567345、45789,而不是156234、567345、4578923
"156234 something 567345 another thing 45789 anything"
结果应为具有以下特征的数字集合:
156234, 567345, 45789
我尝试了@“\d+”
,但它只会给我156234
编辑:数字是整数,但是它们也可以像“156234某物567345某物45789某物2345”这样出现。在这种情况下,我只需要整数,即156234、567345、45789,而不是156234、567345、457892345
此外,我不想要的整数将始终在前加一个文本,用于ex:anything2345。您希望在字符上拆分,而不是在数字上拆分。使用大写字母D
string[] myStrings = Regex.Split(sentence, @"\D+");
正则表达式一切正常,只需完成所有匹配即可
Regex regex = new Regex(@"\d+");
foreach (Match match in regex.Matches("156234 something 567345 another thing 45789 anything"))
{
Console.WriteLine(match.Value);
}
如果2345不应与修改后的示例字符串(156234某物567345某物45789某物2345)匹配,则可以使用Dima的解决方案,但与正则表达式:
\b\d+\b
这确保了数字被单词边界包围。This'z在java中。你实际上不需要正则表达式。。只是一个普通的替代品,所有这些都能帮你搞定例如:您可以去掉非数字,然后拆分并计算总和
public static int getSumOfNumbers(String s) {
int sum = 0;
String x = s.replaceAll("\\D+", " ");
String[] a = x.split(" ");
for(int i = 0; i < a.length; i++)
sum += Integer.parseInt(a[i]);
System.out.println(x + " : and sum is : "+sum);
return sum;
}
public static int getsumofNumber(字符串s){
整数和=0;
字符串x=s.replaceAll(“\\D+”,“”);
字符串[]a=x.split(“”);
for(int i=0;i
什么类型的数字?只有整数,或者可以有浮点数?大于int
?您的正则表达式与您的字符串示例匹配。你确定要迭代所有匹配项吗?就像这个解决方案的创造性+1一样