本文介绍了删除String中重复的字符的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这样的字符串aaaabbbcccaddddcfggghhhh,我想删除重复的字符,得到一个像这样的字符串abcadcfgh。

I am having strings like this "aaaabbbccccaaddddcfggghhhh" and i want to remove repeated characters get a string like this "abcadcfgh".

一个简单的实现就是:

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

}

return str2.toString();

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

Is it possible to have a better implementation may be using regex?

推荐答案

你可以这样做:

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

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

The regex uses backreference and capturing groups.

正常的正则表达式是(。)\ 1 + 但是你要通过java中的另一个反斜杠转义反斜杠。

The normal regex is (.)\1+ but you've to escape the backslash by another backslash in java.

如果你想要多个重复的字符:

If you want number of repeated characters:

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

这篇关于删除String中重复的字符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

11-01 21:49