形如"aaaabbbbcccc"的字符串,怎么分割成"aaaa","bbbb"和"cccc"?
感觉用正则大材小用了,其实可以按照如下的方法实现。
function mysplit(str) {
res = []
l = 0
r = 1
while(r < str.length) {
if (str.charAt(r) != str.charAt(l)) {
res.push(str.slice(l,r))
l = r
} else {
r = r + 1
}
}
res.push(str.slice(l,r))
return res
}
str = "aaaabbbbcccc"
console.log(mysplit(str))
如果非要用正则的话
str = "aaaabbbbcccc"
var regexp = /a+|b+|c+|d+|e+|f+|g+|h+|i+|j+|k+|l+|m+|o+|p+|q+|r+|s+|t+|u+|v+|w+|x+|y+|z+|A+|B+|C+|D+|E+|F+|G+|H+|I+|J+|K+|L+|M+|O+|P+|Q+|R+|S+|T+|U+|V+|W+|X+|Y+|Z+|/g
var matches_array = str.match(regexp)
console.log(matches_array)
// [ 'aaaa', 'bbbbb', 'cccccc', '' ]
var str = "aaaabbbbcccc";
function strRepeat(str){
var preStr = ""
var strArr = [];
for(var i=0;i<str.length;i++){
if(str[i]==str[i+1]){
preStr += str[i];
}else{
preStr += str[i];
strArr.push(preStr);
preStr = ""
}
}
return strArr;
}
console.log(strRepeat(str))
最好别用正则,正则的话需要向后断言性能会慢。
'aaaabbbbcccc'.match(/(\w)\1{3}/g)
(3) ["aaaa", "bbbb", "cccc"]
13 回答13k 阅读
7 回答2.2k 阅读
3 回答1.4k 阅读✓ 已解决
6 回答1.4k 阅读✓ 已解决
2 回答1.4k 阅读✓ 已解决
3 回答1.4k 阅读✓ 已解决
6 回答1.2k 阅读
很简单