7

文字列の" \n a b c \n 1 2 3 \n x y z "場合、 になる必要があり"a b c 1 2 3 x y z"ます。

この正規表現を使用 str.replaceAll("(\s|\n)", ""); 「abc123xyz」は取得できますが、間にスペースを入れるにはどうすればよいですか。

4

5 に答える 5

11

正規表現を使用する必要はありません。trim()代わりにandを使用できますreplaceAll()

 String str = " \n a b c \n 1 2 3 \n x y z ";
 str = str.trim().replaceAll("\n ", "");

これにより、探している文字列が得られます。

于 2012-08-18T01:56:27.603 に答える
3

これはうまくいきます:

str = str.replaceAll("^ | $|\\n ", "")
于 2012-08-18T02:06:20.437 に答える
1

正規表現でこれを本当にやりたい場合は、おそらくこれでうまくいくでしょう

String str = " \n a b c \n 1 2 3 \n x y z ";

str = str.replaceAll("^\\s|\n\\s|\\s$", "");
于 2012-08-18T01:56:19.247 に答える
1

これは、私がそれを行う方法の非常に単純で簡単な例です

String string = " \n a   b c \n 1  2   3 \n x y  z "; //Input
string = string                     // You can mutate this string
    .replaceAll("(\s|\n)", "")      // This is from your code
    .replaceAll(".(?=.)", "$0 ");   // This last step will add a space
                                    // between all letters in the 
                                    // string...

このサンプルを使用して、最後の正規表現が機能することを確認できます。

class Foo {
    public static void main (String[] args) {
        String str = "FooBar";
        System.out.println(str.replaceAll(".(?=.)", "$0 "));
    }
}

出力: "Foo B a r"

正規表現のルックアラウンドの詳細については、http: //www.regular-expressions.info/lookaround.htmlを参照してください。

このアプローチにより、任意の文字列入力で機能するようになり、質問に正確に答えるために、元の作業にもう 1 つのステップが追加されるだけです。ハッピーコーディング:)

于 2015-06-24T16:57:12.260 に答える