Javascript split()无法在IE中运行

让我们说我有一个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]))); } 

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

Squeegy在评论中的解决方案

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

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

 testText.split("\n") 

而不是

 testText.split(/\n/) 

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

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

可能重复的JavaScript:拆分在IE中不起作用? ? Internet Explorer从结果数组中排除几乎所有空值(例如,当两个分隔符在数据中彼此相邻时出现,或者在数据的开头或结尾出现分隔符时)。

我在IE中看到了与.split()和新行相同的棘手行为。 您可以使用自己的拆分function来更紧密地控制它:

 function mySplit(str, ch) { var pos, start = 0, result = []; while ((pos = str.indexOf(ch, start)) != -1) { result.push(str.substring(start, pos)); start = pos + 1; } result.push(str.substr(start)); return(result); } 

这里的工作示例: http : //jsfiddle.net/jfriend00/xQTNZ/ 。