【发布时间】:2011-10-15 13:30:15
【问题描述】:
我想要实现的是像这样拆分字符串,即分隔符是该索引之前的字符与该索引之后的字符不同的索引:
"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
}
}
太天真了,我不喜欢:
- 我手动迭代每个字符,并逐个字符地追加到数组中
- 对于我想要实现的简单事情来说有点太长了
我正在考虑使用正则表达式,但我不确定正则表达式应该是什么。是否可以定义一个表示“一个字符和一个不同的字符跟随”的正则表达式?
或者更一般地说,有没有更优雅的解决方案来实现这种拆分方法?
【问题讨论】:
标签: javascript arrays string split