3
我想达成什么是分裂像这样的字符串,即分隔符在哪里该索引之前的字符是从指数之后的字符不同的索引:如何通过作为分隔符的字符差异来分割字符串?
"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
}
}
这是幼稚的,我不喜欢它:
- 我手动遍历每个角色,而我的角色附加到阵列字符
- 这是一个有点太长期为我想实现的简单的事情
我想使用正则表达式,但我不知道什么正则表达式应该是。是否可以定义一个正则表达式,意思是“一个字符和另一个字符跟随”?
或者更一般地说,是否有一个更优雅的解决方案来实现这种分割方法?
你刚刚做了一个忍者编辑添加'g'修饰符? – NullUserException
@NullUserExceptionఠ_ఠ不。我刚刚在最初发布后添加了解释。 – Gumbo