繁体   English   中英

删除字符串中的重复字符

[英]Removing repeated characters in String

我有像这样的字符串“ aaaabbbccccaaddddcfggghhhh”,我想删除重复的字符,得到像这样的字符串“ abcadcfgh”。

一个简单的实现是:

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

}

return str2.toString();

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

你可以这样做:

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

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

普通的正则表达式是(.)\\1+但是您必须在Java中使用另一个反斜杠来转义反斜杠。

如果您想要重复的字符数:

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

演示版

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

您可以使用Java的String 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)

使用此模式/(.)(?=\\1)/g替换任何内容
演示版

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM