Find and replace all NewLine or BreakLine characters with \n in a String - Platform independent

java, regex, string

Solution

If you want literal `\n` then following should work:

String repl = str.replaceAll("(\\r|\\n|\\r\\n)+", "\\\\n")

Problem

I am looking for a proper and robust way to find and replace all `newline` or `breakline` chars from a `String` independent of any OS platform with `\n`. This is what I tried, but didn't really work well. ``` public static String replaceNewLineChar(String str) { try { if (!str.isEmpty()) { return str.replaceAll("\n\r", "\\n") .replaceAll("\n", "\\n") .replaceAll(System.lineSeparator(), "\\n"); } return str; } catch (Exception e) { // Log this exception return str; } } ``` Example: Input String: ``` This is a String and all newline chars should be replaced in this example. ``` Expected Output String: ``` This is a String\nand all newline chars\nshould be replaced in this example. ``` However, it returned the same input String back. Like it placed \n and interpreted it as Newline again. Please note, if you wonder why would someone want `\n` in there, this is a special requirement by user to place the String in XML afterwords.

Original source