使用replaceAll()从字符串中删除所有两个或多个连续的A

时间:2013-12-27 16:32:40

标签: java replaceall

我想从字符串中删除所有两个或多个连续的A

即,如果输入为AAAAAAABBABBCACBAAZASCAAA,则输出应为BBABBCACBZASC

我尝试的是,

String k = "AAAAAAABBABBCACBAAZASCAAA";
System.out.println(k.replaceAll("(AA)+", "-").replaceAll("-A","").replaceAll("-", ""));

工作正常。但如果字符串包含-,则会产生问题。我该如何解决?

3 个答案:

答案 0 :(得分:7)

k.replaceAll("A{2,}", "-"); 是你想要的模式

答案 1 :(得分:1)

String k = "AAAAAAABBABBCACBAAZASCAAA";
System.out.println(k.replaceAll("(A{2,})", ""));

答案 2 :(得分:1)

如果您使用以下内容,则只需要一个replaceAll步骤:

String original = "AAAAAAABBABBCACBAAZASCAAA";
String replaced = original.replaceAll("A{2,}", "");
// assertEquals("BBABBCACBZASC",replaced);

您的正则表达式仅匹配* A * s的偶数,这就是您必须使用其他replaceAll步骤才能成功的原因。你真正想要的是用<“替换两个或多个连续的 * A * s。在正则表达式中,这需要使用正确的量词,如Quantifiers tutorial中所述。在您的情况下:A{2,}