我正在尝试通过新行拆分文本区域数据中的文本。我当前的代码有效,除了一个小要求:生成的数组也必须包含空行。
<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>
当前结果为:
["我喜欢吃冰淇淋。狗很快.",","前一行仅由空格组成.","最后3行为空.","最后一行。
它应该是什么:
["我喜欢吃冰淇淋。狗很快.",","前一行仅由空格组成.","最后3行为空.",","最后一行。
您的.split
将包含,但是当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/);
JS小提琴
除了 geedubb 的答案之外,如果您希望出于编码原因避免使用反斜杠:
var lines = $('#data').val().split(String.fromCharCode(10));