java - 去除字符串中的重复字符

标签 java regex 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());

Demo

关于java - 去除字符串中的重复字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23520205/

相关文章:

c - 循环跳过 C 中的第二个输入

python - re.VERBOSE 和前瞻断言错误

java - 不可变是什么意思?

java - 我们可以在 MATLAB 中应用密码学技术吗?

java - GUI 如何列出服务器上的可用文件

regex - Mongoose 验证 : required : false, 验证 : regex, 问题与空值

regex - 正则表达式在第二个和第三个斜杠之间查找文本

c - 为字符串数组分配内存

java - JSF 2.2 和 Spring 4 以及不同层的 CDI 不丢失 Spring 特性

java - Clojure中调用java非静态方法