-1

スペースと + が許可されている電話番号が与えられた場合、数字以外のスペースや余分なスペースが削除されるように正規表現をフォーマットするにはどうすればよいでしょうか?

私はこれまでのところこれを持っています

String num = "        Ken's Phone is +  123   2213    123    (night time)";
System.out.println(num.replaceAll("[^\\d|+|\\s]", "").replaceAll("\\s\\s+", " ").replaceAll("\\+ ", "\\+").trim());

同じ結果が得られるように単純化しますか?

ありがとうございました

4

3 に答える 3

1

最初にスペースを含む数字の部分を抽出し、次に複数のスペースを 1 つのスペースに圧縮します。最後に、プラス記号に続くすべてのスペースを削除します。

String numberWithSpaces = str.replaceAll("^[^\\d+]*([+\\d\\s]+)[^\\d]*$", "$1").replaceAll("\\s+", " ").replaceAll("\\+\\s*", "+");

このコードをテストしましたが、動作します。

于 2013-06-05T09:16:41.867 に答える
1

trim()最初に、または少なくとも複数のスペースをすべて置き換える前に置きます。

また、\s空白を意味することにも注意してください: [ \t\n\x0B\f\r]、' ' のみを意味する場合は、それを使用してください。

少なくとも 2 つのスペースのみを置き換えたいことを表現するより適切な方法は、次のようになります。

replaceAll("\\s{2,}", " ")
于 2013-06-05T09:01:46.110 に答える
1

次のように簡略化できます。

num.replaceAll("[^\\d+\\s]", "")  // [^\\d|+|\\s] => [^\\d+\\s]
   .replaceAll("\\s{2,}", " ")    // \\s\\s+      => \\s{2,}
   .replaceAll("\\+\\s", "+")     // \\+          => +
   .trim()
于 2013-06-05T08:59:53.977 に答える