web-dev-qa-db-fra.com

JavaScript remplace \ n par <br />

var messagetoSend = $.trim(document.getElementById("msgText").value);
messagetoSend = messagetoSend.replace("\n", "<br />");
alert(messagetoSend);

Compte tenu de l'entrée:

Line 1


Line 2




Line 3

Cela alerte:

Line 1<br />


Line 2




Line 3

Quand j'attends d'alerter:

Line 1<br /><br /><br />Line 2<br /><br /><br /><br /><br />Line 3
72
Tom Gullen

Vous avez besoin du/g pour correspondance globale

replace(/\n/g, "<br />");

Cela fonctionne pour moi pour \n - voir cette réponse si vous pouviez avoir \r\n

NOTE:La dupe est la réponse la plus complète pour toute combinaison de \r\n, \r Ou \n

var messagetoSend = document.getElementById('x').value.replace(/\n/g, "<br />");
console.log(messagetoSend);
<textarea id="x" rows="9">
    Line 1
    
    
    Line 2
    
    
    
    
    Line 3
</textarea>

[~ # ~] met à jour [~ # ~]

Il semble que certains visiteurs de cette question ont un texte avec les lignes de séparation échappé comme

du texte\ r\nsur plus d'une ligne "

Dans ce cas, vous devez échapper aux barres obliques:

replace(/\\r\\n/g, "<br />");

REMARQUE: Tous les navigateurs ignoreront \r Dans une chaîne lors du rendu.

161
mplungjan

Gère l'un ou l'autre type de saut de ligne

str.replace(new RegExp('\r?\n','g'), '<br />');
72
WSkinner

Utilisez une expression régulière pour .replace() .:

messagetoSend = messagetoSend.replace(/\n/g, "<br />");

Si ces sauts de ligne ont été créés par l'encodage windows, vous devrez également remplacer le carriage return.

messagetoSend = messagetoSend.replace(/\r\n/g, "<br />");
8
jAndy