我想接受任何给定的字符串并根据重复字符将其拆分。
举个例子,如果我要输入字符串abcaaabbc
,我想输出一个等于:[abca, a, ab, bc]
的字符串数组。每次重复一个字符时,我都想开始一个新的字符串。
当然可以使用循环执行此操作,但我想知道是否可以使用String.split()
方法实现它。如果是的话 - RegEx
会是什么?
答案 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校长在这里工作