replaceAll"|" 通过java中的"$"

Sha*_*hed 2 java replaceall

我试图替换所有"|" 使用以下代码"2":

 String myString = "I want to change | with 2";
 String trimedString = myString.replaceAll("|", "2");
 System.out.print(trimedString);
Run Code Online (Sandbox Code Playgroud)

我的预期产量是:

"I want to change | with 2"
Run Code Online (Sandbox Code Playgroud)

但实际产出是:

"2I2 2w2a2n2t2 2t2o2 2c2h2a2n2g2e2 2|2 2w2i2t2h2 222"
Run Code Online (Sandbox Code Playgroud)

它在每个char之前和之后添加了2个.这样做的正确方法是什么?

xvz*_*zwx 5

您必须在管道符号前面插入两个反斜杠才能将其转义.

String myString = "I want to change | with 2";
String trimedString = myString.replaceAll("\\|", "2");
System.out.print(trimedString);
Run Code Online (Sandbox Code Playgroud)


Ted*_*opp 5

如果使用replaceAll,第一个参数将被视为正则表达式。因此,您需要转义|,它是一个正则表达式元字符:

String trimedString = myString.replaceAll("\\|", "2")
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用其中一种replace()方法来代替replaceAll(). 它们仍然替换所有出现的情况,但不使用正则表达式匹配。例如:

String trimedString = myString.replace("|", "2");
Run Code Online (Sandbox Code Playgroud)

它将每个参数视为文字字符串。或者,由于您正在进行单字符替换,因此可以使用:

String trimedString = myString.replace('|', '2');
Run Code Online (Sandbox Code Playgroud)

这将是迄今为止最有效的。