如何用特殊字符替换字符串的一部分

时间:2010-12-01 11:34:04

标签: java string replace

我想用"\\_\\_\\_\\_\\_"

替换字符串的某个部分
(e.g. String str = "Hello World")

如果我str.replaceAll("World", "\\_\\_\\_\\_\\_");

我在替换后的字符串中看不到"\"字符,我希望它会显示"Hello \_\_\_\_\_"

3 个答案:

答案 0 :(得分:4)

你需要:

str = str.replaceAll("World", "\\\\_\\\\_\\\\_\\\\_\\\\_");

See it.

\是Java字符串中的转义字符。所以要表示文字\,您需要使用另一个\作为\\将其转义。

\也是正则表达式引擎的转义字符。因此,Java字符串中的\\将作为\发送到正则表达式引擎,不会按字面处理,而是用于转义后续字符。

要将\\传递给regex引擎,您需要在Java字符串中包含\\\\


由于您正在用另一个字符串替换字符串(而不是模式),实际上不需要正则表达式,您可以使用replace类的String方法为:

input = input.replace("World", "\\_\\_\\_\\_\\_");

See it.

答案 1 :(得分:2)

您需要使用4个反斜杠插入一个。

重点是:在文字java字符串中,反斜杠是一个转义字符,因此文字字符串“\”是一个反斜杠。但在正则表达式中,反斜杠也是一个转义字符。正则表达式\匹配单个反斜杠。这个作为Java字符串的正则表达式变为“\\”。

所以尝试这样的事情:

String str = "hello world";
System.out.println(str.replace("world","\\\\_\\\\_\\\\_\\\\"));

答案 2 :(得分:1)

查看this帖子。