删除String中的重复字符

时间:2014-05-07 14:12:06

标签: java regex string

我有这样的字符串" aaaabbbccccaaddddcfggghhhh"我想删除重复的字符得到这样的字符串" abcadcfgh"。

对此的简单实现是:

for(Character c:str.toCharArray()){
  if(c!=prevChar){
    str2.append(c);
    prevChar=c;
  }

}

return str2.toString();

是否有可能使用正则表达式更好的实现?

4 个答案:

答案 0 :(得分:6)

你可以这样做:

"aaaabbbccccaaddddcfggghhhh".replaceAll("(.)\\1+","$1");

正则表达式使用反向引用和捕获组。

正常的正则表达式是(.)\1+,但你必须通过java中的另一个反斜杠来逃避反斜杠。

如果您想要多个重复字符:

String test = "aaaabbbccccaaddddcfggghhhh";
System.out.println(test.length() - test.replaceAll("(.)\\1+","$1").length());

Demo

答案 1 :(得分:2)

使用正则表达式,您可以使用替换字符串(.)\1+替换$1

答案 2 :(得分:2)

您可以使用Java的字符串replaceAll()方法简单地使用正则表达式执行此操作。

String s = "aaaabbbccccaaddddcfggghhhh";
System.out.println(s.replaceAll("(.)\\1{1,}", "$1")) //=> "abcadcfgh"

正则表达式

(               group and capture to \1:
 .              any character except \n
)               end of \1
\1{1,}          what was matched by capture \1 (at least 1 times)

答案 3 :(得分:1)

使用此模式/(.)(?=\1)/g并替换为任何内容 Demo