1

我正面临 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}

有什么想法吗??

4

2 回答 2

3

您需要对|正则表达式中具有特殊含义的符号进行转义。

complementaryInformation = complementaryInformation.replaceAll("keyRPT11=08\\|keyRPT19=01","keyRPT11=08|keyRPT19=2");

replaceAll()方法将正则表达式模式作为第一个参数。replace()方法不将正则表达式作为参数。

于 2011-10-14T11:05:38.467 回答
0

String.replaceAll() 采用正则表达式,而 String.replace() 采用文字。

于 2011-10-14T11:07:41.747 回答