Java如何用单个字符替换字符串中的多个重复字符?
用单个字符替换连续重复字符的简便方法
当然可以!完全不用写繁琐的循环逻辑,正则表达式就能轻松搞定这类连续重复字符的替换需求,绝对是最简洁高效的方案。
针对你提到的斜杠替换场景
如果你只需要处理连续的/,直接用匹配一个或多个斜杠的正则表达式替换成单个斜杠就行:
String input = "/////Hello//this////////is///Java"; String output = input.replaceAll("/+", "/"); System.out.println(output); // 输出结果: /Hello/this/is/Java
通用场景:替换任意连续重复的单个字符
如果你的需求更通用——把任何连续重复的单个字符都替换成一个,比如把aaaaabbbccccc变成abcc,可以用带捕获组的正则:
String input = "aaaaabbbcccccHello world!!!"; String output = input.replaceAll("(.)\\1+", "$1"); System.out.println(output); // 输出结果: abccHello world!
简单解释下这个正则的逻辑:
(.):捕获任意一个单个字符,把它存到第一个捕获组里\\1+:匹配和第一个捕获组完全相同的字符,且至少重复一次$1:把匹配到的连续重复部分替换成捕获组里的那个单个字符
这种方法比手动写循环高效太多,不用自己遍历字符、判断重复状态、拼接字符串,一行代码就能搞定,可读性也拉满~
内容的提问来源于stack exchange,提问作者Tailor
相关产品推荐
相关产品推荐

