0

次のような文字列からすべての数値を取得する必要があります。

"156234   something 567345 another thing 45789 anything"

結果は、次のような数値のコレクションになります。

156234, 567345, 45789

私は試し@"\d+"ましたが、それは私にしか与えません156234

編集:数字は整数ですが、「156234何か567345別のもの45789anything2345」のように発生することもあります。この場合、整数、つまり156234、567345、45789のみが必要であり、156234、567345、45789、2345は必要ありません。

また、私が望まない整数の前には、常にex:anything2345のテキストが付きます。

4

4 に答える 4

9

すべての正規表現で問題ありません。すべての一致を通過する必要があります。

Regex regex = new Regex(@"\d+");

foreach (Match match in regex.Matches("156234 something 567345 another thing 45789 anything"))
{
    Console.WriteLine(match.Value);
}
于 2012-11-12T18:54:25.663 に答える
6

数字ではなく文字で分割したい。大文字の D を使用

string[] myStrings = Regex.Split(sentence, @"\D+");

ソース

于 2012-11-12T18:54:15.720 に答える
2

改訂されたサンプル文字列で 2345 が一致しない場合 (156234 何か 567345 別のもの 45789 何か 2345)、Dima のソリューションを使用できますが、正規表現を使用できます。

\b\d+\b

これにより、数値が単語境界で囲まれていることが保証されます。

于 2012-11-12T21:13:47.747 に答える
0

This'z in Java. 実際には正規表現は必要ありません..通常のreplaceAllだけでうまくいくはずです! : 例 : 非数字を取り除き、分割して合計を計算できます。

  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;
}
于 2013-02-11T01:58:50.960 に答える