用字符替换未知的图案大小

时间:2013-06-14 11:34:23

标签: java regex

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

实施例:

  

str =“安妮有没有事情”

解决方案是:

  

“Ane有n件事”

如果一个字符串有两个或多个彼此相邻的一个字符的实例,那么正则表达式应该只用一个字符替换它们。

2 个答案:

答案 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,}/