【问题标题】:Splitting text in textarea by new lines (including empty lines) into javascript array通过新行(包括空行)将textarea中的文本拆分为javascript数组
【发布时间】:2015-03-30 06:52:53
【问题描述】:

我正在尝试通过新行拆分文本区域数据中的文本。我当前的代码可以工作,除了一个小要求:结果数组还必须包含空行

<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行是空的。" , "", "最后一行。"]

【问题讨论】:

  • 简单拆分不符合您的要求吗?您的 each 函数会删除所有空行。
  • @HBP 我不知道\n 不会返回false/null。它已根据接受的答案进行了修复。

标签: javascript jquery arrays split newline


【解决方案1】:

您的.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/);

JS Fiddle

【讨论】:

  • 工作得很好,谢谢!我不知道\n 不会返回false/null
【解决方案2】:

如果您出于编码原因希望避免使用反斜杠,除了 geedubb 的回答:

var lines = $('#data').val().split(String.fromCharCode(10));

【讨论】:

    猜你喜欢
    • 2019-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-23
    • 1970-01-01
    • 2013-08-07
    • 2016-12-11
    • 2022-11-04
    相关资源
    最近更新 更多