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 platfo
This seems to work well:
String s = "This is a String\nand all newline chars\nshould be replaced in this example.";
System.out.println(s);
System.out.println(s.replaceAll("[\\n\\r]+", "\\\\n"));
By the way, you don't need to catch exception.
If you want literal \n
then following should work:
String repl = str.replaceAll("(\\r|\\n|\\r\\n)+", "\\\\n")
Oh sure, you could do it with one line of regex, but what fun is that?
public static String fixToNewline(String orig){
char[] chars = orig.toCharArray();
StringBuilder sb = new StringBuilder(100);
for(char c : chars){
switch(c){
case '\r':
case '\f':
break;
case '\n':
sb.append("\\n");
break;
default:
sb.append(c);
}
}
return sb.toString();
}
public static void main(String[] args){
String s = "This is \r\n a String with \n Different Newlines \f and other things.";
System.out.println(s);
System.out.println();
System.out.println("Now calling fixToNewline....");
System.out.println(fixToNewline(s));
}
The result
This is
a String with
Different Newlines and other things.
Now calling fixToNewline....
This is \n a String with \n Different Newlines and other things.