'Javascript: read alert message from file and display with line break
How can I in Javascript read strings from a textfile and display them in an alert box with newlines?
Suppose I have an ASCII textfile "messages.txt" containing two lines:
AAA\nBBB\nCCC
DDD\nEEE\nFFF
In javascript, I read the file content and store it in a 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);
Now when I display the first message with
console.log(m[0]);
alert(m[0]);
it is shown exactly as in the textfile and with no line breaks; i.e
AAA\nBBB\nCCC
and not as
AAA
BBB
CCC
Changing \n to \\n, \r\n, \\r\\n or %0D%0A in the textfile doesn't help; the alert is still displayed as one line including the escape characters without replacing them by newline. Changing the encoding of "messages.txt" from ASCII to UTF-8 didn't help either.
To clarify the problem: When m is read from the file "message.txt", it is split into an array of strings. m[0] equal to "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
Why is m[0] not equal to "AAA\nBBB\nCCC" (even if exactly this is what is displayed in the console)? I guess, that is the reason why no line breaks appear.
Solution 1:[1]
you need to add another \ at split('\n') to be split('\\n')
or change the single quote to douple quotes split("\n")
also i encourage you to read this quick article about 'Single' vs "Double" quotes
Solution 2:[2]
Single quotes don't interpret newline breaks (\n). So, you need to change the quotes in your split() method to have double quotes.
Use the split() function like so.
const str = "Hi! I'm text!\nIsn't this supposed to be newline?";
console.log(str.split("\n"));
This should return an array like so when run.
[
"Hi! I'm text!",
"Isn't this supposed to be newline?"
]
This is how to separate your text with line breaks.
For more information, see this other Stack Overflow question.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Omar Tammam |
| Solution 2 | Arnav Thorat |
