Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 字符串的replaceAll方法的奇怪行为_Java_String_Replace_Replaceall - Fatal编程技术网

Java 字符串的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

我面临字符串类的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}
当我使用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作为参数。