【发布时间】:2019-02-22 06:40:57
【问题描述】:
String.split() 的令人困惑的行为:
当 split 函数看到与搜索字符串匹配的字符串/字符时,它会自动将返回的数组中的字符串替换为空白字符串:
'aaaaa'.split('a'); // returns ['', '', '', '', '']
但是当我把它和其他字母放在一起时,神奇地,一对空白字符串消失了:
'abababa'.split('a'); // returns ['', 'b', 'b', 'b', '']
我知道它可以用来分割单词使用
'apples are great'.split(' '); // returns ['apples', 'are', 'great']
但是在单词之间多加一个空格呢?
'apples are great'.split(' '); // returns ['apples', '', 'are', '', 'great']
如果我希望 apples are great'.split(' '); 返回 ['apples', '', '', 'are', '', '', 'great'],有哪些选项可以实现?
【问题讨论】:
-
空白字符串不会消失 - 它们会被您在匹配实例之间引入的内容替换。
-
你的actual problem 是什么?你的要求对我来说真的没有意义。
-
提示:
split在考虑不变量时一点也不令人困惑 ∀x:x.split('a').join('a') === x -
当 split 函数看到一个字符串/字符与搜索字符串匹配时,它会自动将返回的数组中的字符串替换为一个空白字符串:No。它返回上一个匹配(或字符串的开头)和当前匹配(或字符串的结尾)之间的原始字符串的字符。
aaaaa.split('a')返回[ "", "", "", "", "", "" ]的原因(6 个字符串,而不是您在问题中所说的 5 个)是因为每次匹配之间有零个字符,因此它返回 6 个零长度字符串。
标签: javascript arrays node.js split