Java:str.replaceAll()不起作用

Nic*_*ner 1 java string replaceall

我正在尝试从另一个中清除一个字符串.

before = before.replaceAll(Constants.GENE_START_SEQUENCE, "");
Run Code Online (Sandbox Code Playgroud)

然而,以下断言有时会失败:

assert before.indexOf(Constants.GENE_START_SEQUENCE) == -1 : before;
Run Code Online (Sandbox Code Playgroud)

这就是断言吐出的内容:

IIAOOOCOAAAOCCIOOOACAIAOACICOOIAIOOICIIOIIOICOICCCOOAOICOCOOIIOOAOAACIIOCCICIOIII
Run Code Online (Sandbox Code Playgroud)

sep*_*p2k 11

replaceAll仅替换原始字符串中模式的出现.如果由于替换而再次出现该模式,则不会替换该新出现的情况.例:

"XXYY".replaceAll("XY", "");
Run Code Online (Sandbox Code Playgroud)

这将找到一个"XY"(在索引1处),然后用""替换它.结果将是"XY".如果要防止这种情况发生,则必须重新执行replaceAll,直到replaceAll找不到匹配项.

String string = "XXYY";
String oldString;
do {
  oldString = string;
  string = string.replaceAll("XY", "");
} while(!string.equals(oldString));
// string will now be ""
Run Code Online (Sandbox Code Playgroud)