nantitv nantitv - 4 months ago 15
Java Question

How to replace 'n' back slashes (\) with one?

I would like to squeeze out 'n' number of slashes into 1, where n is not fixed.

For example:

String path = "Report\\\\\\n";


Expected output :
"Report\\n"


I tried the following way

System.out.println(path.replaceAll("\\+", "\");


But it's printing
"Report\\\n"


I am not able to reduce more than that.

All the related so question/answer related to fixed number of slashes.

Is there any generic way I can squeeze all backslashes to one?

Answer

If you print path, you'll get:

Report\\\n

That's because \ should be quoted and it's written as \\ in Java.

You should do:

System.out.println(path.replaceAll("\\\\+", "\\\\"));

Explanation:

In (pure) regex, in order to match the literal \, you should quote it. So it's represented as:

\\

In Java, \ is represented as \\, simple math should explain the 4 \s.