¿Cómo puedo en Javascript leer cadenas de un archivo de texto y mostrarlas en un cuadro de alerta con líneas nuevas?
Supongamos que tengo un archivo de texto ASCII "messages.txt" que contiene dos líneas:
AAA\nBBB\nCCC DDD\nEEE\nFFFEn javascript, leo el contenido del archivo y lo almaceno en una variable "m":
var m; var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function () { if ((xmlhttp.readyState==4) && (xmlhttp.status==200 || xmlhttp.status==0)) { m = xmlhttp.responseText.split('\n'); }; }; xmlhttp.open("GET", "messages.txt", false); xmlhttp.send(null);Ahora, cuando muestro el primer mensaje con
console.log(m[0]); alert(m[0]);se muestra exactamente como en el archivo de texto y sin saltos de línea; es decir
AAA\nBBB\nCCCy no como
AAA BBB CCCCambiar \n a \\n , \r\n , \\r\\n o %0D%0A en el archivo de texto no ayuda; la alerta aún se muestra como una línea que incluye los caracteres de escape sin reemplazarlos por una nueva línea. Cambiar la codificación de "messages.txt" de ASCII a UTF-8 tampoco ayudó.
Para aclarar el problema: cuando se lee m del archivo "message.txt", se divide en una matriz de cadenas. m[0] igual a "AAA\nBBB\nCCC".
console.log(m[0]); // displays AAA\nBBB\nCCC console.log('AAA\nBBB\nCCC'); // displays AAA // BBB // CCC console.log(typeof(m[0]) // displays string console.log(m[0]=="AAA\nBBB\nCCC"); // displays false¿Por qué m[0] no es igual a "AAA\nBBB\nCCC" (incluso si esto es exactamente lo que se muestra en la consola)? Supongo que esa es la razón por la que no aparecen saltos de línea.
Las comillas simples no interpretan los saltos de nueva línea ( \n ). Por lo tanto, debe cambiar las comillas en su método split() para tener comillas dobles.
Usa la función split() así.
const str = "Hi! I'm text!\nIsn't this supposed to be newline?"; console.log(str.split("\n"));Esto debería devolver una matriz como esa cuando se ejecuta.
[ "Hi! I'm text!", "Isn't this supposed to be newline?" ]Así es como se separa el texto con saltos de línea.
Para obtener más información, consulte esta otra pregunta sobre el desbordamiento de pila .
necesita agregar otro \ en split('\n') para split('\\n')
o cambie la comilla simple a comillas dobles split("\n")
también lo animo a leer este artículo rápido sobre comillas 'simples' vs 'dobles'