2011-08-07 14 views

risposta

18

La funzione di sostituzione di JavaScript sostituisce la prima occorrenza solo se si utilizza una stringa come criterio di corrispondenza. Per sostituire tutto è possibile utilizzare regex.

provare qualcosa di simile

text = text.replace(/(\r\n|\n|\r)/g,"<br />"); 

Spero che questo aiuti.

1

Prova questo:

text = text.replace(/\r\n|\r|\n/g, '<br />'); 
0

Si dovrebbe dare un'occhiata al feed manualmente. Probabilmente utilizza un altro tipo di fine linea (EOL) rispetto a \r.

Inoltre, per sostituire tutte le occorrenze del tipo EOL, è necessario utilizzare un'espressione regolare nella funzione replace(). Una volta trovato il tipo EOL corretta, usare in questo modo:

text = text.replace(/<type here>/g, '<br />'); 

(ovviamente è necessario sostituire <type here> con il vostro tipo EOL trovato

6

Ci potrebbero essere caratteri di nuova riga invece di ritorni a capo io.. userebbe questo:

text = text.replace(/\r\n?|\n/g, '<br />'); 

che andrà a sostituire tutte le istanze di \r\n, \r, e \n con un <br />, ma non sostituirà \r\n con due pause, che è il comportamento desiderato.

13

Si potrebbe semplicemente applicare CSS white-space:pre sull'elemento, esattamente come l'elemento HTML <textarea> è internamente facendo:

<span style="white-space:pre">your text \n will \n be \n on multiple \n lines</span> 

(nota: una classe è più consigliabile che lo stile, quanto sopra è solo un esempio, calcio d'inizio)

+0

Eccellente suggerimento - Ho usato "white-space: pre-line" per ottenere l'effetto desiderato (Rif: https://developer.mozilla.org/en-US/docs/Web/CSS/white-space) –

+1

'white -space: pre-line' è il biglietto se vuoi solo conservare le linee e non altri spazi bianchi. – krock

Problemi correlati