java replaceAll不适用于\ n字符

时间:2013-09-18 06:36:25

标签: java regex string replaceall

我有一个这样的字符串:John \n Barber现在我想用实际的新行字符替换\ n,这样它就会变成

John

理发

这是我的代码

replaceAll("\\n", "\n");

但它不起作用并给我相同的字符串John \n Barber

4 个答案:

答案 0 :(得分:21)

你需要这样做:

replaceAll("\\\\n", "\n");

replaceAll方法需要在其第一个参数中使用正则表达式。在java字符串中传递2 \时,实际传递一个。问题是\在正则表达式中也是一个转义字符,因此\n的正则表达式是实际\\n所以你需要多加\两次。

答案 1 :(得分:2)

您需要转义\个字符。所以试试

replaceAll("\\\\n", "\n");

答案 2 :(得分:2)

由于正则表达式中的\n(甚至原始新行字符U + 000A)被解释为换行符,因此需要\\n(转义\)来指定斜杠{ {1}}后跟\

这是从正则表达式引擎的角度来看的。

从编译器的角度来看,在Java文字字符串中,您需要转义n,因此我们添加了另一层转义:

\

答案 3 :(得分:2)

replaceAll 正在使用正则表达式,您可以使用替换,这也将替换所有'\ n':

replace("\\\\n", "\n");