将文本区域中的文本按新行(包括空行)拆分为 javascript 数组

Splitting text in textarea by new lines (including empty lines) into javascript array

本文关键字:文本 拆分 javascript 数组 包括空 区域 新行      更新时间:2023-09-26

我正在尝试通过新行拆分文本区域数据中的文本。我当前的代码有效,除了一个小要求:生成的数组也必须包含空行

<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));