動(dòng)漫人物
2023-11-02 17:27:13
我的代碼:var str = '<td>a</td><td>b</td>';
console.log(str.split(/<\/?td>/g));即輸出["", "a", "", "b", ""].為什么會(huì)出現(xiàn)空字符串?引用https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split,如果分隔符是包含捕獲括號(hào)的正則表達(dá)式,則每次匹配分隔符時(shí),捕獲括號(hào)的結(jié)果(包括任何未定義的結(jié)果)都會(huì)拼接到輸出數(shù)組中。但是,并非所有瀏覽器都支持此功能。然而,這顯然不相關(guān),因?yàn)椴东@括號(hào)不存在。
2 回答

達(dá)令說
TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超6個(gè)贊
讓我們看一個(gè)更簡單的例子:
",a,,b,".split(",") // ["", "a", "", "b", ""]
這和你的案子有什么關(guān)系?好吧,如果您有兩個(gè)彼此相鄰的分隔符(一個(gè)前導(dǎo)分隔符或一個(gè)尾隨分隔符),您將在結(jié)果中得到一個(gè)空字符串,因?yàn)檫@就是它們之間的內(nèi)容(并且為了維持應(yīng)該 equal 的行為x.split(a).join(a)
)x
。在您的情況下,兩者</td>
和<td>
in the middle 都是匹配的,這意味著有 2 個(gè)“分隔符”彼此相鄰,導(dǎo)致中間為空字符串。開頭<td>
的 和</td>
結(jié)尾的 導(dǎo)致前導(dǎo)和尾隨分隔符,從而導(dǎo)致開頭和結(jié)尾的空字符串。

神不在的星期二
TA貢獻(xiàn)1963條經(jīng)驗(yàn) 獲得超6個(gè)贊
另一個(gè)答案給了你原因,我會(huì)給你一個(gè)快速的解決方案。如果您想從字符串中刪除“<td>”和“</td>”,只需將它們替換為空(刪除它們)即可。然后拆分你的子字符串。
str.replace(/<\/?td>/g, "").split("")
添加回答
舉報(bào)
0/150
提交
取消