将 textarea 中的文本按新行(包括空行)拆分为 javascript 数组
Splitting text in textarea by new lines (including empty lines) into javascript array
我正在尝试按新行拆分 Splitting textarea data 中的文本。我当前的代码有效,除了一个小要求:生成的数组 还必须包含空行 。
<script>
$(function(){
var lines = [];
$.each($('#data').val().split(/\n/), function(i, line){
if(line){
lines.push(line);
}
});
console.log(lines);
});
</script>
<textarea id="data">
I like to eat icecream. Dogs are fast.
The previous line is composed by spaces only.
The last 3 lines are empty.
One last line.
</textarea>
当前结果为:
["I like to eat icecream. Dogs are fast.", " ", "The previous line is composed by spaces only.", "The last 3 lines are empty.", "One last line."]
应该是什么:
["I like to eat icecream. Dogs are fast.", " ", "The previous line is composed by spaces only.", "", "", "", "The last 3 lines are empty.", "", "One last line."]
您的 .split
将包含 \n,但是当 line
为假时,您可以只推送一个空字符串...
$(function(){
var lines = [];
$.each($('#data').val().split(/\n/), function(i, line){
if(line){
lines.push(line);
} else {
lines.push("");
}
});
console.log(lines);
});
这是一个工作示例:JSFiddle
输出:
["I like to eat icecream. Dogs are fast.",
"", "The previous line is composed by spaces only.",
"", "", "",
"The last 3 lines are empty.",
"", "One last line."]
或者简单地按照上面的评论建议(我假设你的例子已经被简化,你需要在 .each
循环中做一些其他的事情):
var lines = $('#data').val().split(/\n/);
除了 geedubb 的回答之外,如果您出于编码原因更愿意避免使用反斜杠:
var lines = $('#data').val().split(String.fromCharCode(10));
我正在尝试按新行拆分 Splitting textarea data 中的文本。我当前的代码有效,除了一个小要求:生成的数组 还必须包含空行 。
<script>
$(function(){
var lines = [];
$.each($('#data').val().split(/\n/), function(i, line){
if(line){
lines.push(line);
}
});
console.log(lines);
});
</script>
<textarea id="data">
I like to eat icecream. Dogs are fast.
The previous line is composed by spaces only.
The last 3 lines are empty.
One last line.
</textarea>
当前结果为:
["I like to eat icecream. Dogs are fast.", " ", "The previous line is composed by spaces only.", "The last 3 lines are empty.", "One last line."]
应该是什么:
["I like to eat icecream. Dogs are fast.", " ", "The previous line is composed by spaces only.", "", "", "", "The last 3 lines are empty.", "", "One last line."]
您的 .split
将包含 \n,但是当 line
为假时,您可以只推送一个空字符串...
$(function(){
var lines = [];
$.each($('#data').val().split(/\n/), function(i, line){
if(line){
lines.push(line);
} else {
lines.push("");
}
});
console.log(lines);
});
这是一个工作示例:JSFiddle
输出:
["I like to eat icecream. Dogs are fast.",
"", "The previous line is composed by spaces only.",
"", "", "",
"The last 3 lines are empty.",
"", "One last line."]
或者简单地按照上面的评论建议(我假设你的例子已经被简化,你需要在 .each
循环中做一些其他的事情):
var lines = $('#data').val().split(/\n/);
除了 geedubb 的回答之外,如果您出于编码原因更愿意避免使用反斜杠:
var lines = $('#data').val().split(String.fromCharCode(10));