在重复字符之间拆分字符串

时间:2012-12-29 06:41:12

标签: java regex split

我想接受任何给定的字符串并根据重复字符将其拆分。

举个例子,如果我要输入字符串abcaaabbc,我想输出一个等于:[abca, a, ab, bc]的字符串数组。每次重复一个字符时,我都想开始一个新的字符串。

当然可以使用循环执行此操作,但我想知道是否可以使用String.split()方法实现它。如果是的话 - RegEx会是什么?

2 个答案:

答案 0 :(得分:12)

对输入字符串进行标记,其中前一个字符(后视(?<=(.)))与下一个字符相同(前瞻(?=\\1))和\1捕获(.)

    String str = "abcbabaaabbc";
    String regex = "(?<=(.))(?=\\1)";        
    System.out.println(Arrays.toString(str.split(regex)));

答案 1 :(得分:0)

从性能角度来看,我会坚持使用循环。它在O(n)时间内运行。已知string.split(正则表达式)很慢。我最近使用它代替循环,发现与O(n)循环相比它是O(n ^ 2)。

K.I.S.S校长在这里工作