Usando una nueva línea (\ n) en una cadena y renderizando lo mismo en HTML


87

Tengo una cuerda que dice

string display_txt = "1st line text" +"\n" + "2nd line text";

en Jquery, estoy tratando de usar

('#somediv').html(display_txt).css("color", "green")

Claramente, espero que mi mensaje se muestre en 2 líneas, pero en cambio \ n se muestra en el mensaje. ¿Alguna solución rápida para eso?

Gracias,


1
Bastante claro, la respuesta está en su pregunta, está tratando de representar el mensaje de error en div como html, por lo que puede usar la <br />etiqueta
Murtaza

No hay nada "bastante claro" en esperar dos líneas. Por el contrario, está bastante claro que la nueva línea se representará como un espacio sin formato, solo envolviendo la línea si es necesario. Así es como funciona HTML, por supuesto, también es como .htmlfunciona.

2
Solo quise decir con el contexto donde he almacenado mi cadena como "texto de primera línea" y "texto de segunda línea", estaba claro que los quiero en 2 líneas, no con respecto a cómo funciona html :) gracias.
KeenUser

Respuestas:


79

Usar <br />para una nueva línea en html:

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

1
por alguna razón, tengo que escapar del "\ n" como "\\ n" o de lo contrario no funciona. (probado en Chrome 46). ¿Alguna razón por la que?
Sujay Phadke

2
Tenga en cuenta que esto solo reemplazará la primera aparición del \ncarácter dentro de la cadena. Consulte la documentación de MDN
Dominic Boulanger

3
lo mejor .replace(/\n/g, "<br />")es evitar más nuevas líneas.
KingRider

2
Creo que la respuesta de @vsync debería ser la aceptada.
Ayush Kumar

Funcionó perfectamente. Gracias.
Joshlsullivan

174

Configure su CSS en la celda de la tabla para

white-space:pre-wrap;

document.body.innerHTML = 'First line\nSecond line\nThird line';
body{ white-space:pre-wrap; }


6
entonces, ¿no se supone que esta es la respuesta aceptada? LE: Veo que esto solo es compatible con el enlace
gciochina

4
Esta respuesta es mucho mejor que configurar innerHTML, porque no causa una vulnerabilidad XSS.
LinusK

4
Además, puede utilizar las white-space:pre-line;secuencias de espacios en blanco que se colapsarán en un solo espacio en blanco. El texto se ajustará cuando sea necesario y en saltos de línea. Más información en: https://www.w3schools.com/cssref/pr_text_white-space.asp
HakuteiJ

Esta respuesta no convierte \ n dentro del texto a una nueva línea
irl_irl

2
@ste_irl - ¿qué quieres decir? los \nmedios una nueva línea deben ser impresos y no hace lo imprimen
VSYNC

6

Puede usar una etiqueta previa en lugar de un div. Esto mostrará automáticamente sus \ n de la manera correcta.

<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script>
$(document).ready(function(){
         var display_txt = "1st line text" +"\n" + "2nd line text";
         $('#somediv').html(display_txt).css("color", "green");
});
</script>
</head>
<body>

<pre>
<p id="somediv"></p>
</pre>

</body>
</html>

1

¿Quizás en .textlugar de .html?


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.