user2790289
user2790289

Reputation: 193

java replaceAll not working for \n characters

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

Answers (4)

Avi
Avi

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

nhahtdh
nhahtdh

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

stan
stan

Reputation: 1014

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

replace("\\\\n", "\n");

Upvotes: 3

Rafi Kamal
Rafi Kamal

Reputation: 4600

You need to escape \ character. So try

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

Upvotes: 3

Related Questions