¿Cómo puedo leer el salto de línea de un valor con JavaScript y reemplazar todos los saltos de línea con <br />
elementos?
Ejemplo:
Una variable pasada de PHP como se muestra a continuación:
"This is man.
Man like dog.
Man like to drink.
Man is the king."
Me gustaría que mi resultado se vea así después de que JavaScript lo convierta:
"This is man<br /><br />Man like dog.<br />Man like to drink.<br /><br />Man is the king."
javascript
Jin Yong
fuente
fuente
Respuestas:
Esto convertirá todos los retornos en HTML
En caso de que te preguntes qué ?: significa. Se llama un grupo sin captura. Significa que el grupo de expresiones regulares dentro de los paréntesis no se guardará en la memoria para que se haga referencia más adelante. Puede consultar estos hilos para obtener más información:
https://stackoverflow.com/a/11530881/5042169 https://stackoverflow.com/a/36524555/5042169
fuente
str.replace("\n", '<br />')
(el primer argumento es una cadena regular) reemplazará solo la primera aparición.String#replace
Coacciona su primer argumento desdeString
unaRegExp
instancia escapada , sin banderas.str.replace('\n', '<br />');
es equivalente astr.replace(new RegExp('\n'), '<br />');
str.split("\n").join("<br />")
jsperf.com/split-join-vs-replace-regex RegEx parece un poco más rápidoSi su preocupación es solo mostrar saltos de línea, puede hacerlo con CSS.
Jsfiddle: https://jsfiddle.net/5bvtL6do/2/
Nota : Preste atención al formateo y sangría del código, ya
white-space: pre-line
que mostrará todas las líneas nuevas (excepto la última línea nueva después del texto, ver violín).fuente
white-space: pre-wrap;
preferir el usowhite-space: pre-line;
(para no agregar una línea deSin expresiones regulares:
fuente
\\n
no coincide en una nueva línea, porque está buscandobackslash
+n
.Esto funciona para entradas provenientes de un área de texto
fuente
Si la respuesta aceptada no funciona bien para usted, entonces puede intentarlo.
Funcionó para mi.
fuente
new RegExp('\n', 'g')
es idéntico a/\n/g
(a excepción de algunas minucias sobre el uso de literales primitivos frente a sus constructores)./\n/g
como una cadena!Independientemente del sistema:
fuente
También es importante codificar el resto del texto para protegerse de posibles ataques de inyección de script
fuente
Esto funcionó para mí cuando el valor vino de un TextBox:
fuente
Para aquellos de ustedes que solo quieren permitir max. 2
<br>
seguidos, puedes usar esto:Primera línea: busque
\n
OR\r\n
donde al menos 2 de ellos están en una fila, por ejemplo\n\n\n\n
. Luego reemplácelo con 2br
Segunda línea: busque todos los únicos
\r\n
o\n
reemplácelos por<br>
fuente
si envía la variable desde PHP, puede obtenerla con esto antes de enviar:
fuente
str = str.replace(/\n/g, '<br>')
str = str.replace(/\n*\n/g, '<br>')
fuente
str = str.replace(/\n+/g, '<br>')
para el segundo casoNo respondo la pregunta específica, pero estoy seguro de que esto ayudará a alguien ...
Si tiene una salida de PHP que desea representar en una página web usando JavaScript (quizás el resultado de una solicitud de Ajax), y solo desea retener espacios en blanco y saltos de línea, considere encerrar el texto dentro de un
<pre></pre>
bloque:fuente
Tratar
fuente