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']
,有什么选择可以实现?
答案 0 :(得分:0)
您可以执行以下操作。您在其中匹配所有单词和所有空格,然后通过它们进行映射。如果该项为空格,则使用trim将返回空字符串。
const res = 'apples are great'.match(/\w+|\s/g).map(item=>item.trim());
console.log(res);
答案 1 :(得分:0)
您可以在此处引用MDN文档的split()-https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split:
找到后,将从字符串中删除分隔符,并且 子字符串以数组形式返回。如果找不到分隔符 或省略,则该数组包含一个元素,该元素由 整个字符串。如果分隔符为空字符串,则转换str 到一个字符数组。如果在开头出现分隔符 或字符串的结尾,或两者兼而有之,数组的开头,结尾或两者兼而有之 以空字符串开头和结尾。因此,如果 该字符串仅包含一个分隔符实例, 数组由两个空字符串组成。