通过新行(包括空行)将textarea中的文本拆分为javascript数组

时间:2015-01-30 18:02:53

标签: javascript jquery arrays split newline

我正在尝试将文本拆分为拆分textarea数据中的新行。我的当前代码有效,除了一个小要求:结果数组也必须包含空行

<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行为空。”,“最后一行。”] < / p>

应该是什么:

  

[“我喜欢吃冰淇淋。狗很快。”,“”,“前一行仅由空格组成。”,“”,“”,“”,“最后3行是空的。” ,“”,“最后一行。”]

2 个答案:

答案 0 :(得分:5)

您的.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

答案 1 :(得分:1)

除了 geedubb 的回答之外,如果您出于编码原因不想使用反斜杠:

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