Question

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

Was it helpful?

Solution

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.

OTHER TIPS

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

You need to escape \ character. So try

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

replaceAll is using Regular Expressions, you can use replace which will also replace all '\n':

replace("\\\\n", "\n");
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top