次のような文字列があります: 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");