47 votes

Java Regex - Utilisation de la méthode replaceAll de String pour remplacer les nouvelles lignes

Je dispose d'une chaîne de caractères et je voudrais simplement remplacer tous les retours à la ligne par la chaîne suivante " --linebreak-- " .

Est-ce qu'il suffirait d'écrire :

string = string.replaceAll("\n", " --linebreak-- ");

Je suis confus avec la partie regex de celui-ci. Ai-je besoin de deux barres obliques pour la nouvelle ligne ? Cela suffit-il ?

76voto

Bohemian Points 134107

N'utilisez pas de regex ! . Il suffit d'une correspondance en texte clair pour remplacer "\n" .

Utilisez replace() pour remplacer une chaîne littérale par une autre :

string = string.replace("\n", " --linebreak-- ");

Notez que replace() remplace toujours tous comme le fait replaceAll() - la différence est que replaceAll() utilise l'expression rationnelle pour la recherche.

46voto

kandarp Points 1707

Utilisez la regex ci-dessous :

 s.replaceAll("\\r?\\n", " --linebreak-- ")

Il n'y a vraiment que deux lignes de saut pour UNIX et Windows OS.

37voto

Pshemo Points 34648

Depuis que le moteur regex de Java 8 supporte \R qui représente n'importe quel séparateur de ligne (un peu plus d'info : https://stackoverflow.com/a/31060125/1393766 ).

Ainsi, si vous avez accès à Java 8, vous pouvez utiliser

string = string.replaceAll("\\R", " --linebreak-- ");

4voto

RanRag Points 9395

Pas besoin de 2 backslashes .

 String string = "hello \n world" ;
 String str = string.replaceAll("\n", " --linebreak-- ");
 System.out.println(str);

Sortie = hello --linebreak-- world

2voto

Matt Points 2671

J'ajoute juste ceci pour être complet, parce que le truc des 2 barres obliques inversées est réel.

Reportez-vous à la réponse de @dasblinkenlight dans la question suivante sur les SO (en parlant de \t mais elle s'applique pour \n également) :

java, expression régulière, nécessité d'échapper à la barre oblique inverse dans l'expression régulière

"Il y a deux interprétations des séquences d'échappement en cours : d'abord par le compilateur Java, puis par le moteur regexp. Lorsque le compilateur Java voit deux barres obliques, il les remplace par une seule barre oblique. Lorsqu'un t suit une barre oblique, Java le remplace par une tabulation ; lorsqu'un t suit une double barre oblique, Java le laisse tel quel. Cependant, comme deux barres obliques ont été remplacées par une seule barre oblique, le moteur de regexp voit \t et l'interprète comme un onglet."

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X