15

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

John

理发师

这是我的代码

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

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

4

4 回答 4

30

你需要做:

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

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

于 2013-09-18T06:38:08.397 回答
4

由于\n(或什至原始换行符 U+000A)在正则表达式中被解释为换行符,因此您需要\\n(转义\)以指定斜杠\后跟n.

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

从编译器的角度来看,在Java字面量字符串中,需要转义\,所以我们再增加一层转义:

String output = inputString.replaceAll("\\\\n", "\n");
//                                      \\n      U+000A
于 2013-09-18T06:39:41.107 回答
3

你需要转义\字符。所以试试

replaceAll("\\\\n", "\n");
于 2013-09-18T06:39:05.040 回答
3

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

replace("\\\\n", "\n");
于 2013-09-18T06:41:34.893 回答