Remplacement du caractère de nouvelle ligne dans UNIX

Je fais un code pour remplacer un caractère de nouvelle ligne par une chaîne. Sous Windows, quand j’utilise

Ssortingng.replaceAll(System.getProperty("line.separator"), "\\n"); 

Cela fonctionne bien, mais il échoue sous UNIX.

Que dois-je utiliser sous UNIX?

\n est correct pour Unix. Windows utilise \r\n et Mac utilise \r IIRC.

Le problème réside peut-être dans le fait que Java, en tant que langage multiplateforme, remplace automatiquement \n par le séparateur du système. Je ne connais pas Java mais je suppose que c’est le cas.

Edit: Si le code que vous avez posté est ce que vous utilisez, je pense que je vois le problème. Ssortingng est une classe. Il est également immuable en Java. Il devrait plutôt être ceci:

 Ssortingng myStr = "abc\ndef"; myStr = myStr.replaceAll(/* params */); 

Le texte reçu contenait probablement des séparateurs de lignes Windows, par conséquent, remplacer uniquement le caractère \n n’avait aucun effet.

Si vous ne connaissez pas l’origine du texte (ou si le texte contient un mélange de séparateurs de lignes), l’approche suivante peut vous aider. Convertissez d’abord les séparateurs de lignes Windows et Mac en séparateurs Unix, puis convertissez les séparateurs Unix en séparateur de système.

 final Ssortingng DOS = "\r\n", NIX = "\n", MAC = "\r"; Ssortingng converted = original.replace(DOS, NIX) .replace(MAC, NIX) .replace(NIX, System.lineSeparator());