首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么分割返回空字符串,甚至连捕获括号都不存在?

问为什么分割返回空字符串,甚至连捕获括号都不存在?
EN

Stack Overflow用户
提问于 2020-12-11 02:10:36
回答 2查看 63关注 0票数 0

我的代码:

代码语言:javascript
复制
var str = '<td>a</td><td>b</td>';
console.log(str.split(/<\/?td>/g));

输出["", "a", "", "b", ""]。

为什么空字符串会出现?

引用https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split的话,

如果

分隔符是包含捕获括号的正则表达式,那么每次匹配分隔符时,捕获括号的结果(包括任何未定义的结果)将拼接到输出数组中。然而,并不是所有的浏览器都支持这种功能。

但是,这显然与此无关,因为不存在捕获括号。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-12-11 02:21:02

让我们看一个更小的例子:

代码语言:javascript
复制
",a,,b,".split(",")
// ["", "a", "", "b", ""]

这跟你的案子有什么关系?如果彼此之间有两个分隔符,一个前导分隔符或一个尾随分隔符,则结果中会有一个空字符串,因为这是它们之间的内容(为了维护x.split(a).join(a)应该等于x的行为)。在您的示例中,中间的</td>和<td>都是匹配的,这意味着彼此之间有两个“分隔符”,导致中间的空字符串。起始处的<td>和结尾处的</td>导致一个前导和尾随分隔符,导致开始和结尾处的空字符串。

票数 2
EN

Stack Overflow用户

发布于 2020-12-11 02:25:27

另一个答案给你原因,我会给你一个快速的解决办法。如果您想去掉字符串中的"“和"”,只需将它们替换为nothing (删除它们)。然后把你的子子分开。

代码语言:javascript
复制
str.replace(/<\/?td>/g, "").split("")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65244857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档