JavaScript split()仅在Firefox/IE中向数组添加额外项
JavaScript split() adding extra item to array in Firefox/IE only
我正试图用JavaScript split()方法来理解不同浏览器的行为,该方法通过linefeed(''n)regexp进行匹配。
我有一个文本区域输入表单,它将从Excel粘贴行,并通过换行将其拆分为一个数组:
var rowsplit = document.getElementById("inputfield").value.split(/'n/g);
用户通过侧栏选择Excel中的行,因此前11列有数据,在这些列之后还有一大堆空列,我稍后将其切片()到电子表格的边缘。因此,Excel的典型输入是:
[data][data][data][data]x11[null][null][null]etc until edge of spreadsheet
区别在于regexp匹配的内容和推入数组的内容。
在Chrome 28和Safari 5.1中,当选择三行信息时,它会将''n正确匹配为3,将它们输出到阵列中,并在菊花区中嬉戏,而不会在意。
不过,在IE10和Firefox 19中,它可以很好地匹配前三个换行符,然后再提取一个空白换行符。因此,''n表达式将其拆分为四个项目,撞上一栋建筑并导致数百人死亡。
我读了很多关于不同浏览器以不同方式处理CRLF字符的文章,并尝试通过''r''n和just进行拆分,但这似乎会带来更多麻烦。我还将Excel行复制到Notepad++中,并打开CRLF字符的可见性,看到只有3个字符,那么为什么IE和Firefox要添加另一个呢?
我也读过很多关于regexp、JS、浏览器、换行符和Excel的痛苦,但其中大部分似乎与旧浏览器更相关,所以我希望了解当前情况的人能提供一些见解。
谢谢!
据推测,IE10和Firefix 19认为该值具有额外的尾部换行符。.split()
不会因为它在末尾就忽略它。
您应该能够在.split()
'ing:之前用.trim()
将其删除
var rowsplit = document.getElementById("inputfield").value.trim().split(/'n/g);
另一种选择是使用零宽度前瞻,只匹配后面有任何内容的'n
:
var rowsplit = document.getElementById("inputfield").value.split(/'n(?='s*'S)/g);
每个示例:http://jsfiddle.net/FChES/
- 向多维数组添加值和从多维数组请求值
- 如何将JS数组添加到Meteor自动表单条目中
- 在不使用循环的情况下,从一个数据库字符串值向javascript数组添加多个对象
- 将行从数组添加到谷歌图表
- 从不同的数组添加重复的图块 PIXI.js
- 如何在 Javascript 中向数组添加其他对象
- 将javascript数组添加到多维数组中
- Coderbyte数组添加解决方案--For循环与For循环
- Knockout.js向数组添加新项
- Highcharts将变量数组添加到序列中
- 向javascript对象数组添加值
- 我可以用Javascript向数组添加函数吗
- 将数组添加到另一个数组
- 你能给被劫持的JavaScript数组添加一个函数吗
- 我可以向数组添加对象键吗
- 如何向JSON数组添加新属性
- 通过将$resource查询数组添加到AngularJS中另一个数组的底部来进行分页加载
- 使用名称/值从 json 数组添加项
- Javascript数组添加 - 所有组合
- 从 json 文件向 javascript 数组添加值