小数点がない文字列から数値を抽出するには、正規表現のサポートが必要です。
Input
2 4.0 6.0 7 8 4.60
Output
2 7 8
編集:正規表現とJavaに関するこれに対する別のフォローアップ質問。私が見つけたものに何かを追加したいとしましょう(私が本当に欲しいのは24.07.5を取得して2.04.07.5に変換することです。つまり、小数点のないものに欠落している.0を追加することを意味します)、それをどのように行うのですか?私の弦と同じ手つかずの物を保ちますか?
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
}
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
私のバージョン: (?<![\.\d])\d+(?!\.\d+)