次のような文字列があります: John \n Barber
\n を実際の改行文字に置き換えたいので、
John
理髪師
これは私のコードです
replaceAll("\\n", "\n");
しかし、それは機能しておらず、同じ文字列が表示されますJohn \n Barber
次のような文字列があります: John \n Barber
\n を実際の改行文字に置き換えたいので、
John
理髪師
これは私のコードです
replaceAll("\\n", "\n");
しかし、それは機能しておらず、同じ文字列が表示されますJohn \n Barber
あなたがする必要があります:
replaceAll("\\\\n", "\n");
このreplaceAll
メソッドは、最初の引数に正規表現を期待しています。Java 文字列で2\
を渡す場合、実際には 1 つを渡します。問題は\
、正規表現でもエスケープ文字であるため、正規表現\n
は実際には2回\\n
追加する必要があることです。\
\n
(または生の改行文字 U+000A でさえ) 正規表現では改行文字として解釈されるため\\n
、\
スラッシュの\
後にn
.
これは、正規表現エンジンの観点からです。
コンパイラの観点から見ると、Java リテラル文字列ではエスケープする必要があるため\
、別のエスケープ層を追加します。
String output = inputString.replaceAll("\\\\n", "\n");
// \\n U+000A
replaceAllは正規表現を使用しています。replace を使用すると、すべての '\n' も置換されます:
replace("\\\\n", "\n");
\
文字をエスケープする必要があります。だから試してみてください
replaceAll("\\\\n", "\n");