Jiew Meng
Jiew Meng

Reputation: 88189

JavaScript Newline Character

From this question, this ...

lines = foo.value.split(/\r\n|\r|\n/);

is one way to split a string, but how do I join it back with newlines?

Also, I wonder if I is say linux which uses whichever newline character, then switch to windows, won't my web app break? The newlines become not recognized? Or maybe the browser does some conversion?

Upvotes: 57

Views: 165398

Answers (7)

Marri
Marri

Reputation: 11

lines.join('\n') worked for me to get elements in new line in windows machine.

Upvotes: 1

DuskL
DuskL

Reputation: 21

I used '\r' is OK, macOS 12.6, chrome 109.0.5414.119

lines.join('\r')

Upvotes: 1

Marinos An
Marinos An

Reputation: 10818

The following seems a future-proof, os-independent code:

lines.join(`
`)

Upvotes: 4

Jacob Relkin
Jacob Relkin

Reputation: 163228

You can use the Array object's join method to glue together array elements into a string:

lines.join("\r\n");

In CSS: remember to use

white-space: pre;

Upvotes: 50

kennebec
kennebec

Reputation: 104760

Split it on /\r?\n/, in case the string includes the carriage returns with newlines.

join it with '\n', in any browser and any os.

Upvotes: 29

David Tang
David Tang

Reputation: 93664

If you want to join using newline characters, just do:

lines.join("\r\n");

But if you want to display on the HTML page, you'd want to wrap each line in <p></p> tags:

html = "<p>" + lines.join("</p><p>") + "</p>";

Upvotes: 67

Eran Medan
Eran Medan

Reputation: 45715

As said, join is the best, but here is the hard way (untested, I hope it's not too trivial):

var result;

for (i=0;i<lines.length;i++){
   result+=lines[i]+"\r\n"; //depends on OS
}

Upvotes: 0

Related Questions