假设我有一个带有 textarea 的文字:
如您所见,第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
{/ 3>}中的{p> 解决方案将split(/\n/)
替换为split("\n")
- 该死的IE!
答案 0 :(得分:6)
正则表达式拆分在IE8及更低版本中表现得很奇怪。使用字符串比较,它似乎工作(fiddle)
testText.split("\n")
而不是
testText.split(/\n/)
[编辑] 来自Steven Levithan's Blog:
Internet Explorer 从结果中排除几乎所有空值 数组(例如,当两个分隔符彼此相邻时出现 数据,或在数据的开头或结尾出现分隔符时)
答案 1 :(得分:2)
JavaScript: split doesn't work in IE?可能重复? Internet Explorer从结果数组中排除几乎所有空值(例如,当两个分隔符在数据中彼此相邻时出现,或者在数据的开头或结尾出现分隔符时)。
答案 2 :(得分:2)
我在IE中看到了与.split()
和新行相同的棘手行为。您可以使用自己的分割功能来更紧密地控制它:
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/。