Java 字符串的replaceAll方法的奇怪行为
我面临字符串类的replaceAll方法的奇怪行为 我有一个包含以下数据的字符串缓冲区Java 字符串的replaceAll方法的奇怪行为,java,string,replace,replaceall,Java,String,Replace,Replaceall,我面临字符串类的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 complementaryInforma
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}
当我使用replace方法时,我将得到正确的输出
keyRPT1={keyRPT11=01|keyRPT19=01}|keyRPT3={keyRPT11=03|keyRPT19=01}|keyRPT8={keyRPT11=08|keyRPT19=2}
有什么想法吗?你需要避开在正则表达式中有特殊意义的
符号
complementaryInformation = complementaryInformation.replaceAll("keyRPT11=08\\|keyRPT19=01","keyRPT11=08|keyRPT19=2");
replaceAll()
方法将regex模式作为第一个参数replace()
方法不使用正则表达式作为参数。String.replaceAll()使用正则表达式,而String.replace()使用文本。但在调用replace方法时,同样的方法也起作用。为什么会这样?@MahendraAthneria:看看鲁布里克的答案<代码>替换
不使用正则表达式。当您对两个方法为何表现不同感到困惑时,请先查阅文档。@Mahendra:replaceAll()
method将regex模式作为第一个参数replace()
方法不将regex作为参数。