问题
I have a string like this: John \n Barber now I want to replace \n with actual new line character so it will become
John
Barber
this is my code for this
replaceAll("\\n", "\n");
but it is not working and giving me same string John \n Barber
回答1:
You need to do:
replaceAll("\\\\n", "\n");
The replaceAll method expects a regex in its first argument. When passing 2 \ in java string you actually pass one. The problem is that \ is an escape char also in regex so the regex for \n is actualy \\n so you need to put an extra \ twice.
回答2:
You need to escape \ character. So try
replaceAll("\\\\n", "\n");
回答3:
replaceAll is using Regular Expressions, you can use replace which will also replace all '\n':
replace("\\\\n", "\n");
回答4:
Since \n (or even the raw new line character U+000A) in regex is interpreted as new line character, you need \\n (escape the \) to specify slash \ followed by n.
That is from the regex engine's perspective.
From the compiler's perspective, in Java literal string, you need to escape \, so we add another layer of escaping:
String output = inputString.replaceAll("\\\\n", "\n");
// \\n U+000A
来源:https://stackoverflow.com/questions/18865393/java-replaceall-not-working-for-n-characters