我面临String类的replaceAll方法的奇怪行为。String的replaceAll方法的奇怪行为
我有一个包含以下数据
keyRPT1={keyRPT11=01|keyRPT19=01}|keyRPT3={keyRPT11=03|keyRPT19=01}|keyRPT8={keyRPT11=08|keyRPT19=01}
我下面写代码的字符串缓冲区,以取代"keyRPT11=08|keyRPT19=01"
与"keyRPT11=08|keyRPT19=2"
我使用下面的代码为
String complementaryInformation = "keyRPT1={keyRPT11=01|keyRPT19=01}|keyRPT3={keyRPT11=03|keyRPT19=01}|keyRPT8={keyRPT11=08|keyRPT19=01}";
complementaryInformation = complementaryInformation.replaceAll("keyRPT11=08|keyRPT19=01","keyRPT11=08|keyRPT19=2");
的replaceAll给予我意想不到的输出
keyRPT1={keyRPT11=01|keyRPT11=08|keyRPT19=2}|keyRPT3={keyRPT11=03|keyRPT11=08|keyRPT19=2|keyRPT8={keyRPT11=08|keyRPT19=2|keyRPT11=08|keyRPT19=2}
当我使用替换法的话,我会得到正确的输出
keyRPT1={keyRPT11=01|keyRPT19=01}|keyRPT3={keyRPT11=03|keyRPT19=01}|keyRPT8={keyRPT11=08|keyRPT19=2}
任何想法的家伙?
但同样的工作,当我打电话替换方法。为什么是这样? –
@MahendraAthneria:见Rubrick的回答。 'replace'不使用正则表达式。如果您对两种方法行为不同的原因感到困惑,请先参阅文档**。 –
@Mahendra:'replaceAll()'方法将正则表达式作为第一个参数。 'replace()'方法不会将regex作为参数。 –