Javascript split()在IE中不起作用

And*_* SK 4 javascript jquery internet-explorer split

让我们说我有一个textarea与此文本:

  1. 第一行一些文字.
  2. 第二行,其他文字.下一行将是空的.
  3. (空行)
  4. (空行)
  5. 最后一行在这里

如您所见,第3行和第4行为空(\n).我需要获得精确的线条结构(也有空行)并将其转换为数组.每一行都是数组的一个元素.这是我目前的代码:

var lines = $('#q').val().split(/\n/);
alert(lines.length); //using alert() because IE doesn't support console.log()
var texts = [];
for(i = 0; i < lines.length; i++) {
    texts.push($.trim(encodeURIComponent(lines[i])));
}
Run Code Online (Sandbox Code Playgroud)

除了IE之外,它适用于所有浏览器.由于某种原因,split()函数忽略IE中的空行(3和4).因此,它们永远不会传递到数组中:s

解决方案通过Squeegy在评论

替换split(/\n/)split("\n")- 该死的IE!

I a*_*ica 6

正则表达式拆分在IE8及更低版本中表现得很奇怪.使用字符串比较,它似乎工作(小提琴)

testText.split("\n")
Run Code Online (Sandbox Code Playgroud)

而不是

testText.split(/\n/)
Run Code Online (Sandbox Code Playgroud)

[编辑]来自Steven Levithan的博客:

Internet Explorer 从结果数组中排除几乎所有空值(例如,当两个分隔符在数据中彼此相邻时出现,或者在数据的开头或结尾出现分隔符时)