Recherchez et remplacez tous les caractères NewLine ou BreakLine par \ n dans une chaîne – indépendante de la plate-forme

Je recherche un moyen approprié et robuste de rechercher et de remplacer tous les caractères de newline ou de breakline newline depuis une Ssortingng indépendante de toute plate-forme de système d’exploitation avec \n .

C’est ce que j’ai essayé, mais je n’ai pas vraiment bien fonctionné.

 public static Ssortingng replaceNewLineChar(Ssortingng 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; } } 

Exemple:

Chaîne d’entrée:

 This is a Ssortingng and all newline chars should be replaced in this example. 

Chaîne de sortie attendue:

 This is a Ssortingng\nand all newline chars\nshould be replaced in this example. 

Cependant, il a renvoyé la même chaîne d’entrée. Comme s’il se plaçait et l’interprétait à nouveau comme Newline. Veuillez noter que si vous vous demandez pourquoi quelqu’un voudrait y \n , il s’agit d’une exigence spéciale de l’utilisateur qui veut que la chaîne soit insérée dans un XML après-mots.

Si vous voulez un \n littéral, \n suit:

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

Cela semble bien fonctionner:

 Ssortingng s = "This is a Ssortingng\nand all newline chars\nshould be replaced in this example."; System.out.println(s); System.out.println(s.replaceAll("[\\n\\r]+", "\\\\n")); 

Au fait, vous n’avez pas besoin d’attraper l’exception.

Oh, bien sûr, vous pouvez le faire avec une ligne de regex, mais quel plaisir est-ce?

 public static Ssortingng fixToNewline(Ssortingng orig){ char[] chars = orig.toCharArray(); SsortingngBuilder sb = new SsortingngBuilder(100); for(char c : chars){ switch(c){ case '\r': case '\f': break; case '\n': sb.append("\\n"); break; default: sb.append(c); } } return sb.toSsortingng(); } public static void main(Ssortingng[] args){ Ssortingng s = "This is \r\na Ssortingng 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)); } 

Le résultat

 This is a Ssortingng with Different Newlines and other things. Now calling fixToNewline.... This is \na Ssortingng with \n Different Newlines and other things.