0

小数点がない文字列から数値を抽出するには、正規表現のサポートが必要です。

Input
2 4.0 6.0 7 8 4.60

Output
2 7 8

編集:正規表現とJavaに関するこれに対する別のフォローアップ質問。私が見つけたものに何かを追加したいとしましょう(私が本当に欲しいのは24.07.5を取得して2.04.07.5に変換することです。つまり、小数点のないものに欠落している.0を追加することを意味します)、それをどのように行うのですか?私の弦と同じ手つかずの物を保ちますか?

4

3 に答える 3

3

Robert Harveysのコメントに沿って、スペースで分割し、結果を繰り返して「。」を探します。正規表現を使用するよりも、読みやすく、保守しやすいです。

string[] splitStr = "2 4.0 6.0 7 8 4.60".split(' '); 
foreach(string s in splitStr){
   if(false == s.Contains("."))
       //do something
}
于 2012-11-29T17:14:30.077 に答える
2

2番目の質問の場合:-

2番目の要件の解決策は次のとおりです。-

String str = "2 4.0 6.0 7.5 8 4.60";
str = str.replaceAll("(?<=^|[ ])(\\d+)(?=$|[ ])", "$1.0");

System.out.println(str);  // Prints 2.0 4.0 6.0 7.5 8.0 4.60

最初の質問の場合:-

この正規表現を使用できます:-

(?<=^|[ ])(\\d+)(?=$|[ ])

digitsこれは、前後の。の任意のシーケンスに一致しspaceます。^また、とを使用して、文字列の最後の数字と一致します$

実装は次のとおりです:-

    String str = "2 4.0 6.0 7 8 4.60";
    Pattern pattern = Pattern.compile("(?<=^|[ ])(\\d+)(?=[$ ])");

    Matcher matcher = pattern.matcher(str);

    while (matcher.find()) {
        System.out.print(matcher.group(1) + " ");
    }

出力:-

2 7 8
于 2012-11-29T17:11:13.870 に答える
0

私のバージョン: (?<![\.\d])\d+(?!\.\d+)

于 2012-11-29T17:21:46.733 に答える