我有一个这样的字符串:John \n Barber
现在我想用实际的新行字符替换\ n,这样它就会变成
John
理发
这是我的代码
replaceAll("\\n", "\n");
但它不起作用并给我相同的字符串John \n Barber
答案 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");