正規表現を使用して特定の繰り返し文字を置き換える方法はありますか?
例:
str = "Anne には nnnn のものがあります"
解決策は次のとおりです。
「姉はn個持っている」
文字列に 1 つの文字のインスタンスが 2 つ以上隣り合っている場合、正規表現はそれらすべてを 1 つのみに置き換える必要があります。
可能です:
inputString.replaceAll("(.)\\1+", "$1")
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();
}
これは、2 回以上繰り返される n に一致する必要があります。
/n{2,}/