将字符串拆分为重复的字符

我想将字符串“ aaaabbbccccaaddddcfggghhhh”拆分为“ aaaa”,“ bbb”,“ cccc”。“ aa”,“ dddd”,“

c”,“ f”等。

我尝试了这个:

String[] arr = "aaaabbbccccaaddddcfggghhhh".split("(.)(?!\\1)");

但这会吃掉一个字符,因此使用上面的正则表达式我得到“ aaa”,而我希望它成为“ aaaa”作为第一个字符串。

我该如何实现?

回答:

试试这个:

String   str = "aaaabbbccccaaddddcfggghhhh";

String[] out = str.split("(?<=(.))(?!\\1)");

System.out.println(Arrays.toString(out));

=> [aaaa, bbb, cccc, aa, dddd, c, f, ggg, hhhh]

说明:我们想将字符串分成相同字符的组,因此我们需要找出每个组之间的“边界”。我使用Java语法进行正向后看以选择前一个字符,然后使用负向前看并带有向后引用,以验证下一个字符与前一个字符不同。实际上没有消耗任何字符,因为仅使用了两个环视断言(即,常规表达式为零宽度)。

以上是 将字符串拆分为重复的字符 的全部内容, 来源链接: utcz.com/qa/409073.html

回到顶部