15

次のような文字列があります: John \n Barber\n を実際の改行文字に置き換えたいので、

John

理髪師

これは私のコードです

replaceAll("\\n", "\n");

しかし、それは機能しておらず、同じ文字列が表示されますJohn \n Barber

4

4 に答える 4

30

あなたがする必要があります:

replaceAll("\\\\n", "\n");

このreplaceAllメソッドは、最初の引数に正規表現を期待しています。Java 文字列で2\を渡す場合、実際には 1 つを渡します。問題は\、正規表現でもエスケープ文字であるため、正規表現\nは実際には2回\\n追加する必要があることです。\

于 2013-09-18T06:38:08.397 に答える
4

\n(または生の改行文字 U+000A でさえ) 正規表現では改行文字として解釈されるため\\n\スラッシュの\後にn.

これは、正規表現エンジンの観点からです。

コンパイラの観点から見ると、Java リテラル文字列ではエスケープする必要があるため\、別のエスケープ層を追加します。

String output = inputString.replaceAll("\\\\n", "\n");
//                                      \\n      U+000A
于 2013-09-18T06:39:41.107 に答える
3

replaceAllは正規表現を使用しています。replace を使用すると、すべての '\n' も置換されます:

replace("\\\\n", "\n");
于 2013-09-18T06:41:34.893 に答える
3

\文字をエスケープする必要があります。だから試してみてください

replaceAll("\\\\n", "\n");
于 2013-09-18T06:39:05.040 に答える