'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