The simplest and safest way to split a string using new lines, regardless of format (CRLF, LFCR or LF), is to remove all carriage return characters and then split on the new line characters. "text".replace(/\r/g, "").split(/\n/);
This ensures that when you have continuous new lines (i.e. \r\n\r\n
, \n\r\n\r
, or \n\n
) the result will always be the same.
In your case the code would look like:
(function ($) {
$(document).ready(function () {
$('#data').submit(function (e) {
var ks = $('#keywords').val().replace(/\r/g, "").split(/\n/);
e.preventDefault();
alert(ks[0]);
$.each(ks, function (k) {
alert(k);
});
});
});
})(jQuery);
Here are some examples that display the importance of this method:
var examples = ["Foo\r\nBar", "Foo\r\n\r\nBar", "Foo\n\r\n\rBar", "Foo\nBar\nFooBar"];_x000D_
_x000D_
examples.forEach(function(example) {_x000D_
output(`Example "${example}":`);_x000D_
output(`Split using "\n": "${example.split("\n")}"`);_x000D_
output(`Split using /\r?\n/: "${example.split(/\r?\n/)}"`);_x000D_
output(`Split using /\r\n|\n|\r/: "${example.split(/\r\n|\n|\r/)}"`);_x000D_
output(`Current method: ${example.replace(/\r/g, "").split("\n")}`);_x000D_
output("________");_x000D_
});_x000D_
_x000D_
function output(txt) {_x000D_
console.log(txt.replace(/\n/g, "\\n").replace(/\r/g, "\\r"));_x000D_
}
_x000D_