代码之家  ›  专栏  ›  技术社区  ›  neubert

为什么split即使没有捕获括号也返回空字符串?

  •  0
  • neubert  · 技术社区  · 4 年前

    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

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

    2 回复  |  直到 4 年前
        1
  •  2
  •   Aplet123    4 年前

    让我们看一个更简单的例子:

    ",a,,b,".split(",")
    // ["", "a", "", "b", ""]
    

    x.split(a).join(a) 应该相等 x ). 对你来说,两者都是 </td> <td> <td> 一开始 </td>

        2
  •  0
  •   Octal    4 年前

    另一个答案告诉你原因,我会给你一个快速的解决办法。 如果要从字符串中删除“<td>”和“</td>”,只需将它们替换为nothing(删除它们)。 那么

    str.replace(/<\/?td>/g, "").split("")