Languages
[Edit]
EN

JavaScript - split string by new line character

31 points
Created by:
Gigadude
371

In this article, we're going to have a look at the problem of how to split string to separate lines in JavaScript.

Note: by default in JavaScript \n newline character should be used, but modern applications exchange information with external endpoints that force programmers to deal with different cases - this article provides quick solutuioins for the problem.

Quick solution:

// ONLINE-RUNNER:browser;

var text = 'line 1\n' +               // \n - used as new line symbol
           'line 2';

var lines = text.split(/\r?\n/);      // split by:     \r\n  or  \n

console.log(lines);                   // array items:  line 1, line 2, line 3

Note: the above solution works on Linux and Windows.

 

Alternative quick solutions 

  • It works on all operating systems:
// ONLINE-RUNNER:browser;

var text = 'line 1\r\n' +                   // \r\n - used as new line symbol
           'line 2\n' +                     // \n   - used as new line symbol
           'line 3';

var lines = text.split(/\r\n|\n\r|\n|\r/);  // split by:     \r\n  \n\r  \n  or  \r

console.log(lines);                         // array items:  line 1, line 2, line 3
  • It is an alternative¬†approach that uses \R¬†equivalent:
// ONLINE-RUNNER:browser;

var text = 'line 1\r\n' +         // \r\n - used as new line symbol
           'line 2\n' +           // \n   - used as new line symbol
           'line 3';

// https://dirask.com/posts/JavaScript-R-equivalent-in-RegEx-D9a2rD
//
var lines = text.split(/\u000D\u000A|[\u000A\u000B\u000C\u000D\u0085\u2028\u2029]/);

console.log(lines);               // array items:  line 1, line 2, line 3

 

Look at below problem description and examples to see how it works in practice.

1. Problem overview

Different operating systems have different newline symbols.

There are a few most commonly used new line separations:

\nMultics, Unix and Unix-like systems (Linux, macOS, FreeBSD, AIX, Xenix, etc.), BeOS, Amiga, RISC OS, and others.
\r\nAtari TOS, Microsoft Windows, DOS (MS-DOS, PC DOS, etc.), DEC TOPS-10, RT-11, CP/M, MP/M, OS/2, Symbian OS, Palm OS, Amstrad CPC, and most other early non-Unix and non-IBM operating systems.
\rCommodore 8-bit machines (C64, C128), Acorn BBC, ZX Spectrum, TRS-80, Apple II series, Oberon, the classic Mac OS, MIT Lisp Machine and OS-9
\n\rAcorn BBC and RISC OS spooled text output.

Source: https://en.wikipedia.org/wiki/Newline

 

2. Problem solutions

2.1. Universal new lines splitting example

It is possible to propose some universal regular expression that lest to get a very good splitting result.

It is necessary to use \r\n|\n\r|\n|\r as pattern.

Go to this article to see details and runnable example.

2.2. Alternative new lines splitting example using \R equivalent

Some modern regular expression implementations provide \R predefined character class,
e.g. Java, Notepad++, etc.

Most JavaScript engines don't support \R yet - so, it is required some trick.

Go to this article to see details and runnable example.

2.3. Microsoft Windows new lines splitting example

// ONLINE-RUNNER:browser;

var text = 'line 1\r\n' +
    'line 2\r\n' +
    'line 3\r\n' +
    'line 4\r\n' +
    'line 5';

var lines = text.split('\r\n');

console.log(lines);

Systems: Atari TOS, Microsoft Windows, DOS (MS-DOS, PC DOS, etc.), DEC TOPS-10, RT-11, CP/M, MP/M, OS/2, Symbian OS, Palm OS, Amstrad CPC, and most other early non-Unix and non-IBM operating systems.

2.4. Unix/Linux new lines splitting example

// ONLINE-RUNNER:browser;

var text = 'line 1\n' +
    'line 2\n' +
    'line 3\n' +
    'line 4\n' +
    'line 5';

var lines = text.split('\n');

console.log(lines);

Systems: Multics, Unix and Unix-like systems (Linux, macOS, FreeBSD, AIX, Xenix, etc.), BeOS, Amiga, RISC OS, and others.

2.5.  The classic Mac OS/OS-9 new lines splitting example

// ONLINE-RUNNER:browser;

var text = 'line 1\r' +
    'line 2\r' +
    'line 3\r' +
    'line 4\r' +
    'line 5';

var lines = text.split('\r');

console.log(lines);

Systems: Commodore 8-bit machines (C64, C128), Acorn BBC, ZX Spectrum, TRS-80, Apple II series, Oberon, the classic Mac OS, MIT Lisp Machine and OS-9. 

See also

  1. JavaScript - universal new lines splitting symbol example

  2. JavaScript - \R equivalent in RegEx 

JavaScript - String (popular problems)

JavaScript - split string by newline
Native Advertising
ūüöÄ
Get your tech brand or product in front of software developers.
For more information Contact us
Dirask - we help you to
solve coding problems.
Ask question.

‚̧ԳŹūüíĽ ūüôā

Join