15

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

nhahtdh
  • 55,989
  • 15
  • 126
  • 162
user2790289
  • 193
  • 1
  • 3
  • 6

4 Answers4

31

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.

Avi
  • 21,182
  • 26
  • 82
  • 121
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
nhahtdh
  • 55,989
  • 15
  • 126
  • 162
3

You need to escape \ character. So try

replaceAll("\\\\n", "\n");
Rafi Kamal
  • 4,522
  • 8
  • 36
  • 50
3

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

replace("\\\\n", "\n");
stan
  • 984
  • 10
  • 15