我质疑为什么我从这段代码中得到以下输出:
'Willie'.split(/[i-l]{1}/); // [ 'W', '', '', '', 'e' ]
我期待得到['W', 'e']
。我不确定为什么它会在阵列中插入孔。
答案 0 :(得分:4)
您要拆分单个字母,因此每个illi
都被视为分隔符,字符串分割如下:
w i l l i e
# w "" "" "" e
# if there's no content between separators, an empty string is in place
# or what would you get with a csv string w,,,,e split on comma ?
尝试使用贪婪量词+
,它会尽可能匹配模式,因此illi
被视为一个分隔符:
console.log('Willie'.split(/[i-l]+/));
答案 1 :(得分:3)
您要将Willie
字符串拆分为i
,j
,k
,l
个字符。如果显示il
子字符串,并且i
和l
都是分隔符,则在这些字母之间有一个空字符串 - 在结果中计算。
让我们分析整个字符串:
'W', '', 'i', '', 'l', '', 'l', '', 'i', '', 'e'
然后按i
和l
分割:
('W', ''), /i separator/, '', /l separator/, '', /l separator/, '', /i separator/, ('', 'e')
所以在串联组之后我们得到:
'W', '', '', '', 'e'