我想要做的是将这样的字符串分割开来,即使用那些在该索引之前和之后的字符不同的索引作为分隔符:
"AAABBCCCCDEEE" -> ["AAA", "BB", "CCCC", "D", "EEE"]
我一直在试图找到一个简洁的解决方案,但最终得到了这段相当冗长的代码:http://jsfiddle.net/b39aM/1/。
var arr = [], // output
text = "AAABBCCCCDEEE", // input
current;
for(var i = 0; i < text.length; i++) {
var char = text[i];
if(char !== current) { // new letter
arr.push(char); // create new array element
current = char; // update current
} else { // current letter continued
arr[arr.length - 1] += char; // append letter to last element
}
}
这个方法很朴素而且我不喜欢它:
- 我需要手动遍历每个字符,并逐个将字符添加到数组中
- 对于我想要实现的简单功能来说有点太长了
我考虑使用正则表达式,但不确定该使用什么正则表达式。是否有可能定义一个正则表达式,表示“一个字符后跟一个不同的字符”?
或者更一般地说,有没有更优雅的方法来实现此拆分方法?