Чего я хотел бы добиться, так это разделить строку следующим образом: разделители - это индексы, в которых символ перед этим индексом отличается от символа после этого индекса:
"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
}
}
Это наивно и мне не нравится:
- Я вручную перебираю каждый символ и добавляю к массиву символ за символом
- Это слишком много для простой вещи, которую я хочу достичь
Я былдумаю об использовании регулярного выражения, но я не уверен, каким должно быть регулярное выражение.Можно ли определить регулярное выражение, которое означает «один символ и другой символ после»?
Или, в более общем смысле, есть ли более элегантное решение для достижения этого метода расщепления?