JavaScript按多次出现的字母拆分字符串

时间:2014-02-24 19:44:02

标签: javascript regex string split

我试图通过一次或多次出现的字母来分割字符串。

例如:

aaabbcapppp会产生数组["aaa", "bb", "c", "a", "pppp"]

我所拥有的最低效的想法就是利用newArray = str.split("");并根据我的需要重建数组。我认为有一个更有效的解决方案。

2 个答案:

答案 0 :(得分:20)

这样的事情会起作用:

"aaabbcapppp".match(/(.)\1*/g) // ["aaa", "bb", "c", "a", "pppp"]

(.)匹配在组1中捕获的任何单个字符,然后重复零次或多次相同的字符(\1是一个与组1中匹配的完全匹配的反向引用。)< / p>

要仅匹配拉丁字母,请考虑使用[a-z],例如:

"aaa-bbca!!pppp".match(/([a-z])\1*/g) // ["aaa", "bb", "c", "a", "pppp"]

此处,-!!未包含在结果数组中。

答案 1 :(得分:1)

正则表达式解决方案可能是要走的路,但如果由于某种原因你想手动完成,那么这样就可以了。

function charSplit(str) {
    var arr = [], l, j = -1;
    for (var i=0; i<str.length; i++) {
        var c = str.charAt(i);
        l==c ? arr[j] += c : arr[++j] = c;
        l=c;
    }
    return arr;
}

FIDDLE