鍍金池/ 問答/HTML/ javascript中字符串split方法的拆分邏輯?

javascript中字符串split方法的拆分邏輯?

"aaabbbcccdeefff".split(/(\w)\1+/)

這句代碼的輸出結果為:

["", "a", "", "b", "", "c", "d", "e", "", "f", ""]

但是:

"aaabbbcccdeefff".replace(/(\w)\1+/g,"")

輸出結果為:

"d"

所以按照我的理解,拆分結果應該為:

[d]

那里出問題了呢?

回答
編輯回答
心悲涼

replace 首先肯定返回字符串的,按照es5規(guī)范

clipboard.png

最后結果是字符串。一樓說的對,split之后才能是[d]這個結果的

2017年5月30日 14:56
編輯回答
司令

作為 split 參數(shù)的正則表達式如果包換捕捉, 則捕捉的結果會被拼在結果數(shù)組中.
所以結果中會出現(xiàn) a,b,c,e,f. 因為他們是(\w)捕捉的結果, ""則是由于每次迭代時分割符出現(xiàn)在開始或結尾則會產生一個""字符.

如果想達到預期的效果輸出 [d], 可以這樣做:

"aaabbbcccdeefff".replace(/(\w)\1+/g, '').split('')
2018年8月11日 07:01
編輯回答
浪蕩不羈

如果想實現(xiàn)你理解的那種可以這樣"aaabbbcccdeefff".replace(/(\w)\1+/g, "").split("");

2017年3月13日 01:39
編輯回答
伐木累

字符串用replace替換一下,就變成數(shù)組了??怕是瘋了

2018年7月24日 00:43
編輯回答
詆毀你

字符串調用replace返回的當然是字符串。String.prototype.replace()
字符串調用split返回的是分割后的數(shù)組。String.prototype.split()

2018年4月11日 19:05
編輯回答
夏夕
"aaabbbcccdeefff".split(/(\w){1+}/)

// =>["aaabbbcccdeefff"]
2018年2月26日 12:01