Reputation: 193
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
Upvotes: 15
Views: 19222
Reputation: 21858
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.
Upvotes: 31
Reputation: 56809
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
Upvotes: 4
Reputation: 1014
replaceAll is using Regular Expressions, you can use replace which will also replace all '\n':
replace("\\\\n", "\n");
Upvotes: 3
Reputation: 4600
You need to escape \
character. So try
replaceAll("\\\\n", "\n");
Upvotes: 3