从split()中避免换行?

时间:2011-04-05 11:40:56

标签: javascript

我在字符串中有一个列表,如下所示(来自带有<textarea>的{​​{1}}元素):

id=list

JavaScript的:

q1

q2
q3


q4 

我希望var TA = document.getElementById("list").value; lines = TA.split("\r\n"); 变量的值为lines, 但结果是q1,q2,q3,q4(注意空项)

我想避免结果数组中的空字符串 - 我该怎么做?

4 个答案:

答案 0 :(得分:6)

尝试这样的事情,这也应该照顾其他格式的新行(例如,只有\n):

var lines = TA.split(/[\r\n]+/);

或者,要删除代币之前/之后的空行和空格(此代码只会匹配\r\n格式,但您可以使用[\r\n]代替):

var lines = TA.split(/\s*\r\n\s*/);

或者,您可以匹配行而不是拆分换行符:

var lines = TA.match(/.+/g);

.与新行不匹配,因此.+实际上匹配整行,并跳过空行。这也会在数组的开头或结尾跳过空标记(如\n\n a \n b中所示),而split仍会创建空元素。

答案 1 :(得分:2)

分割后,您可以从数组中删除空元素。参见

Remove empty elements from an array in Javascript

答案 2 :(得分:1)

在拆分

之前将多个\ r \ n替换为1
TA.replace(/(\r\n)+/g, "\r\n").split("\r\n")

答案 3 :(得分:0)

使用var lines = TA.split(/[\r\n]{1,}/g);