如何按字符的差异分割字符串作为分隔符
How to split a string by a difference in character as delimiter?
我想要实现的是像这样分割字符串,即分隔符是索引,其中索引之前的字符与索引之后的字符不同:
"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
}
}
这太天真了,我不喜欢。
- 我正在手动迭代每个字符,并且我正在逐个字符地添加到数组
- 对于我想要实现的简单的事情来说,它有点太长了
我正在考虑使用regexp,但我不确定regexp应该是什么。是否有可能定义一个regexp,意思是"一个字符和一个不同的字符"?
或者更一般地说,是否有更优雅的解决方案来实现这种拆分方法?
是的,您可以使用正则表达式:
"AAABBCCCCDEEE".match(/(.)'1*/g)
这里.
将匹配任何字符,'1*
将匹配与先前匹配的字符相同的任何后续字符。使用全局匹配,您将获得所有匹配序列。
相关文章:
- 不使用分隔符分解字符串
- 通过多个分隔符解析字符串
- 用分隔符分隔具有多个整数值的字符串的Javascript"重试错误的值
- 使用Regex拆分字符串,保留分隔符
- JS将分隔符分隔的字符串转换为数组元素
- 在 Javascript 中拆分包含单次出现(不是两次)分隔符的字符串
- 如何将带有逗号千位分隔符的字符串解析为数字
- 在 JavaScript 中拆分字符串,但保留分隔符 /
- 如何拆分具有多个分隔符的字符串
- jquery JSON 从查询字符串中删除分隔符
- 正则表达式使用特定的分隔符JavaScript从字符串中提取部分
- JS/XSS:将用户提供的字符串分配给变量时;替换 <,> 和字符串分隔符是否足够
- 使用 jquery 或 javascript 拆分带有不同分隔符的字符串
- 基于多个分隔符拆分字符串
- 字符串分词器无法正确处理一行中的空标记或多个分隔符
- 如何在 js 中使用 .match(regEx) 仅获取不带分隔符的内部字符串
- 如何在javascript中拆分行空格/分隔符上的字符串
- 如何使用 Angular “数字”过滤器键入时在输入字段中设置带有千和小数分隔符的字符串格式
- 将带有分隔符的数组拆分为字符串
- 通过RegEx Javascript分割2个字符串分隔符