0

有没有办法使用正则表达式替换特定的重复字符?

例子:

str = "安妮有很多东西"

解决方案是:

“安妮有 n 件事”

如果一个字符串有两个或多个相邻的一个字符的实例,正则表达式应该将它们全部替换为一个。

4

2 回答 2

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();
}
于 2013-06-14T11:36:42.750 回答
1

这应该匹配 n 重复 2 次或更多次:

/n{2,}/
于 2013-06-14T11:36:57.990 回答