有没有办法用正则表达式替换特定的重复字符?
实施例:
str =“安妮有没有事情”
解决方案是:
“Ane有n件事”
如果一个字符串有两个或多个彼此相邻的一个字符的实例,那么正则表达式应该只用一个字符替换它们。
答案 0 :(得分:7)
有可能:
inputString.replaceAll("(.)\\1+", "$1")
匹配一个字符,捕获它,重复一次或多次,仅替换捕获。
然而,这可能不是更快的解决方案。这样的事情也可以通过简单的循环来实现:
public String removeRepetitions(final String input)
{
if (input.isEmpty())
return input;
final int len = input.length();
final StringBuilder sb = new StringBuilder(length);
char current = input.charAt(0);
char c;
sb.append(current);
for (int i = 1; i < len; i++) {
c = input.charAt(i);
if (c != current) {
sb.append(c);
current = c;
}
}
return sb.toString();
}
答案 1 :(得分:1)
这应该匹配重复2次或更多次的n:
/n{2,}/