Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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 - Fatal编程技术网

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一样