当前位置: 首页 > 面试题库 >

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

宗项禹
2023-03-14
问题内容

我想将字符串“ 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语法进行正向后看以选择前一个字符,然后使用负向前看并带有向后引用,以验证下一个字符与前一个字符不同。实际上没有消耗任何字符,因为仅使用了两个环视断言(即,常规表达式为零宽度)。



 类似资料:
  • 我有一些字符串,每个字符串都是某个字符串的一个或多个副本。例如: 我想把这些字符串分割成一个列表,这样每个元素都有重复的部分。例如: 由于每个字符串大约有1000个字符长,因此如果速度也相当快,那就太好了。 请注意,在我的例子中,重复都从字符串的开始开始,它们之间没有间隙,所以这比在字符串中查找最大重复的一般问题简单得多。 怎么能这样呢?

  • 问题内容: 我对Regex的经验不足,但是我已经阅读了很多。假设有一个字符串,我想要一个列表,该列表的字符串分为两个部分。我的方法是让一个小组检查是否是数字,然后检查该小组是否重复。像这样 我认为基本上可以检查“ digit”或“ digit +”是否相同。我认为这可以满足我的要求。 问题答案: 用途:

  • 但是,我没有给我需要的东西! 我怎么能那么做?任何代码都能做到?

  • 我有一个字符串变量,它包括我试图排序的网格的列名。。 我希望将其拆分为一个包含4个值的字符串数组。我尝试了以下代码行: 然而,当我运行这个程序时,逗号仍然停留在该值上,因此我有例如和。如果没有逗号,如何拆分这些值?

  • 我有下面的字符串 我想把它分成[“11122”,“”,“3434”]。可以有以下分隔符:-、/、* 我尝试了以下方法 但是我明白

  • 问题内容: 我正在尝试找到一种将String拆分为String数组的方法,并且每当遇到白色香料时就需要对其进行拆分,例如 “嗨,我是保罗” 进入” “嗨”“我”“保罗” 如何使用RegularExpression在split()方法中表示空格? 问题答案: 您需要一个正则表达式,例如,这意味着: 每当遇到至少一个空格时就进行拆分 。完整的Java代码是: