Java で文字列内の 2 つ以上のスペースを 1 つのスペースに置き換え、先頭と末尾のスペースを削除する方法 質問する

Java で文字列内の 2 つ以上のスペースを 1 つのスペースに置き換え、先頭と末尾のスペースを削除する方法 質問する

この文字列をJavaで変更する簡単な方法を探しています

" hello     there   "

こんな感じのものに

"hello there"

ここで、複数のスペースをすべて 1 つのスペースに置き換えますが、文字列の先頭にある 1 つ以上のスペースも削除します。

こういうことで、私は部分的にはそこにたどり着く

String mytext = " hello     there   ";
mytext = mytext.replaceAll("( )+", " ");

しかし、完全にそうではありません。

ベストアンサー1

これを試して:

String after = before.trim().replaceAll(" +", " ");

参照


trim()正規表現なし

これを 1 つの だけで実行することも可能ですreplaceAllが、ソリューションよりも読みにくくなりますtrim()。とはいえ、ここでは regex で何ができるかを示すために提供しています。

    String[] tests = {
        "  x  ",          // [x]
        "  1   2   3  ",  // [1 2 3]
        "",               // []
        "   ",            // []
    };
    for (String test : tests) {
        System.out.format("[%s]%n",
            test.replaceAll("^ +| +$|( )+", "$1")
        );
    }

代替案は 3 つあります。

  • ^_+: 文字列の先頭の任意のスペースシーケンス
    • に一致して置換し$1、空の文字列を取得します。
  • _+$: 文字列の末尾の任意のスペースシーケンス
    • に一致して置換し$1、空の文字列を取得します。
  • (_)+: 上記のいずれにも一致しないスペースのシーケンス、つまり中央にあるもの
    • に一致して置換すると$1、1つのスペースがキャプチャされます。

参照

おすすめ記事