javascript:“ yoyoyoyo” .split('y')的结果,应为['','o','','o','','o','','o'],而不是看到['','o','o','o','o',]

时间:2019-02-21 22:28:31

标签: javascript arrays node.js split

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'],有什么选择可以实现?

2 个答案:

答案 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   到一个字符数组。如果在开头出现分隔符   或字符串的结尾,或两者兼而有之,数组的开头,结尾或两者兼而有之   以空字符串开头和结尾。因此,如果   该字符串仅包含一个分隔符实例,   数组由两个空字符串组成。