javascript - 是否有任何标准说明 "aba".split(/a/) 是否应返回 1,2 或 3 个元素?

标签 javascript string split

根据我的测试

"aba".split(/a/).length

返回

  • 1 个在 ie8 中
  • 3 在 firefox、chrome、opera 中

我一直准备好处理 DOM 操作或事件模型中的差异,但我认为字符串、正则表达式等内容定义明确。我错了吗?

最佳答案

IE 从 split 结果数组中移除所有未定义或空字符串。

由于您的问题似乎与标准的存在有关,因此 EcmaScript 是 Javascript 世界中的最佳匹配。

正则表达式上拆分的行为记录在案:http://www.ecma-international.org/ecma-262/5.1/#sec-15.5.4.14

从示例中可以明显看出,不应从结果数组中删除空字符串,因此 IE(如所怀疑的那样)有问题。

"A<B>bold</B>and<CODE>coded</CODE>".split(/<(\/)?([^<>]+)>/)

    evaluates to the array

["A", undefined, "B", "bold", "/", "B", "and", undefined,  "CODE", "coded", "/", "CODE", ""]

其实浏览器之间还有其他的区别。一个解决方案可能是使用 cross-browser split regex script但最好只了解差异并通过适当的测试处理 split 返回的数组。或者使用一些技巧。

关于javascript - 是否有任何标准说明 "aba".split(/a/) 是否应返回 1,2 或 3 个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13524985/

相关文章:

batch-file - 如何在批处理文件中没有 for 循环的情况下用 "="拆分字符串

java - if(String != null) 仍然通过?

r - 拆分 vs by + 子集

JavaScript var 引用。有人可以向我解释primitive 和 objs/array 之间有什么区别吗?

javascript - 改变数组后,Vue 不渲染数组中的 v-for 输入字段

c - 为什么下面程序中的 fgets 函数(请参阅详细信息)将字符串的长度解释为多一个字符?

c++ - 如何确定 C++ 中字符串数组的大小?

iOS:将 NSString 拆分为 FilePath&Name + Extension

javascript - p5.j​​s - 如何旋转与路线相关的图像

javascript - 在 jQuery 中创建 JSON 对象数组