65 votes

remplacer \ n et \ r \ n par <br /> en java

Ceci a été demandé à plusieurs reprises pour plusieurs langues, mais je ne peux pas le faire fonctionner. J'ai une chaîne comme celle-ci

String str = "This is a string.\nThis is a long string.";

Et je suis en train de remplacer l' \n avec <br /> aide

str = str.replaceAll("(\r\n|\n)", "<br />");

mais l' \n n'est pas remplacé. J'ai essayé d'utiliser cette RegEx Outil pour vérifier et je vois le même résultat. La chaîne d'entrée n'ont pas de match pour "(\r\n|\n)". Ce que je fais mal ?

115voto

Mark Byers Points 318575

Ça marche pour moi.

 public class Program
{
    public static void main(String[] args) {
        String str = "This is a string.\nThis is a long string.";
        str = str.replaceAll("(\r\n|\n)", "<br />");
        System.out.println(str);
    }
}
 

Résultat:

Ceci est une chaîne. <br /> Ceci est une longue chaîne.

Votre problème est ailleurs.

19voto

Dolph Points 12741

Une version un peu plus robuste de ce que vous essayez:

 str = str.replaceAll("(\r\n|\n\r|\r|\n)", "<br />");
 

17voto

Nino van Hooff Points 549

Pour moi, cela a fonctionné:

 rawText.replaceAll("(\\\\r\\\\n|\\\\n)", "\\\n");
 

Astuce: utilisez regex tester pour tester rapidement sans compiler dans votre environnement

8voto

user3798668 Points 1

Depuis mon compte est de nouveau je peux pas voter Nino van Hooff de réponse. Si vos cordes sont à venir à partir d'un Windows source d'aspx basée sur serveur, cette solution fonctionne:

rawText.replaceAll("(\\\\r\\\\n|\\\\n)", "<br />");

Semble être un drôle de jeu de caractères question de la double anti-slash sont considérés comme une seule barre oblique caractères d'échappement. D'où la nécessité pour le quadruple des barres obliques ci-dessus.

De nouveau, dans la plupart des circonstances "(\\r\\n|\\n)" devrait fonctionner, mais si vos cordes sont à venir à partir d'un Windows en fonction de la source d'essayer la ci-dessus.

Juste un avis tout essayé pour corriger le problème j'ai eu en remplacement de ceux des fins de ligne. La pensée était d'abord échec de la conversion de l' Windows-1252 de UTF-8. Mais cela n'a pas de travail non plus. Cette solution est ce qui a fait le tour. :)

2voto

Alan Moore Points 39365

Ça marche pour moi. Le code Java fonctionne exactement comme vous l'avez écrit. Dans le testeur, la chaîne d'entrée doit être:

 This is a string.
This is a long string.
 

... avec un vrai saut de ligne. Vous ne pouvez pas utiliser:

 This is a string.\nThis is a long string.
 

... car il considère \n comme la séquence oblique inverse «n» .

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