java - 如何使用正则表达式删除字符串中的重复字符?

标签 java regex

我需要替换字符串中的重复字符。我尝试使用

outputString = str.replaceAll("(.)(?=.*\\1)", "");

这会替换重复的字符,但字符的位置会发生变化,如下所示。

输入

haih

输出

aih

但我需要得到一个输出hai。也就是说字符串中出现的字符顺序不应该改变。下面给出了一些输入的预期输出。

输入

aaaassssddddd

输出

asd

输入

cdddddggggeeccc

输出

cdge

如何实现?

最佳答案

您的代码似乎要离开最后一个字符,那么这个怎么样?

outputString = new StringBuilder(str).reverse().toString();
// outputString is now hiah
outputString = outputString.replaceAll("(.)(?=.*\\1)", "");
// outputString is now iah
outputString = new StringBuilder(outputString).reverse().toString();
// outputString is now hai

关于java - 如何使用正则表达式删除字符串中的重复字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26813420/

相关文章:

java - java集合对象的算术运算

java - 使用 ANT 构建 Eclipse 项目 - 找不到主类

Guid 的 C# 正则表达式

regex - 左侧的非贪婪正则表达式

regex - Powershell:无法让正则表达式在多行上工作

java - 可以采取哪些 SQL Server 05/08 安全措施来防止 SQL 注入(inject)?

java - 在Java中使用reverse()命令?

java - 如何在 JPA( hibernate )中将持久性单元标记为默认值?

regex - 无法使正则表达式起作用

java - 匹配 ":"之后包含的字符串的正则表达式