有没有办法使用正则表达式替换特定的重复字符?
例子:
str = "安妮有很多东西"
解决方案是:
“安妮有 n 件事”
如果一个字符串有两个或多个相邻的一个字符的实例,正则表达式应该将它们全部替换为一个。
有可能的:
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();
}
这应该匹配 n 重复 2 次或更多次:
/n{2,}/