文字列の" \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」は取得できますが、間にスペースを入れるにはどうすればよいですか。
正規表現を使用する必要はありません。trim()
代わりにandを使用できますreplaceAll()
。
String str = " \n a b c \n 1 2 3 \n x y z ";
str = str.trim().replaceAll("\n ", "");
これにより、探している文字列が得られます。
これはうまくいきます:
str = str.replaceAll("^ | $|\\n ", "")
正規表現でこれを本当にやりたい場合は、おそらくこれでうまくいくでしょう
String str = " \n a b c \n 1 2 3 \n x y z ";
str = str.replaceAll("^\\s|\n\\s|\\s$", "");
これは、私がそれを行う方法の非常に単純で簡単な例です
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 つのステップが追加されるだけです。ハッピーコーディング:)