Come posso sostituire tutte le interruzioni di riga in una stringa con i tag ?

Come posso leggere l’interruzione di riga da un valore con Javascript e sostituire tutte le interruzioni di riga con i tag br ?

Esempio:

Una variabile passata da PHP come di seguito:

  "This is man. Man like dog. Man like to drink. Man is the king." 

Vorrei che il mio risultato assomigliasse a qualcosa del genere dopo che il Javascript lo ha convertito:

  "This is man

Man like dog.
Man like to drink.

Man is the king."

Questo trasformsrà tutti i ritorni in HTML

 str = str.replace(/(?:\r\n|\r|\n)/g, '
');

Se la tua preoccupazione è solo la visualizzazione di interruzioni di riga, puoi farlo con i CSS.

HTML

 
Some test with linebreaks

CSS

 .white-space-pre { white-space: pre-wrap; } 

jsfiddle https://jsfiddle.net/yk1angkz/125/

Nota : Prestare attenzione alla formattazione e all’indentazione del codice, poiché white-space: pre-wrap mostrerà tutti gli spazi bianchi (tranne l’ultima riga dopo il testo, vedi violino).

Senza regex:

 str = str.split("\n").join("
");

Funziona per input provenienti da una textarea

 str.replace(new RegExp('\r?\n','g'), '
');

Se la risposta accettata non funziona bene per te, allora potresti provare.

 str.replace(new RegExp('\n','g'), '
')

Ha funzionato per me.

Indipendentemente dal sistema:

 my_multiline_text.replace(/$/mg,'
');

È inoltre importante codificare il resto del testo per proteggerlo da eventuali attacchi di script injection

 function insertTextWithLineBreaks(text, targetElement) { var textWithNormalizedLineBreaks = text.replace('\r\n', '\n'); var textParts = textWithNormalizedLineBreaks.split('\n'); for (var i = 0; i < textParts.length; i++) { targetElement.appendChild(document.createTextNode(textParts[i])); if (i < textParts.length - 1) { targetElement.appendChild(document.createElement('br')); } } } 

Questo ha funzionato per me quando il valore proveniva da un TextBox:

 string.replace(/\n|\r\n|\r/g, '
');

Per quelli di voi che vogliono solo consentire max. 2 di seguito, puoi usare questo:

 let text = text.replace(/(\r?\n){2,}/g, '

'); text = text.replace(/(\r?\n)/g, '
');

Prima riga: cerca \n OR \r\n dove almeno 2 di loro sono in una riga, ad esempio \n\n\n\n . Quindi sostituirlo con 2 br

Seconda riga: cerca tutti i singoli \r\n o \n e li sostituisce con

se si invia la variabile da PHP, è ansible ottenerla prima di inviare:

 $string=nl2br($string);