我希望"A\nC".replaceAll("\\n", "B").replaceAll("B", "\\n")
返回"A\nC"
,但它会给我"AnC"
。
起初我认为在替换中可能无法识别正则表达式转义符,但"ABC".replaceAll("B", "\\\\")
确实生成"A\\C"
(打印为 A \ C )。
你能帮我理解为什么替换不起作用吗?
我的目标是用换行符替换给定的模式(" \ n")而不写.replaceAll("...", "\n")
(替换字符串将从外部系统提供,不能包含换行符)。< / p>
(我试着四处寻找,但发现有很多关于用其他东西替换换行的问题,而没有用换行替换某些内容。)
答案 0 :(得分:1)
您应该使用“\ n”而不是“\\ n”。 “\\ n”将编译为“\ n”,但不会编译为换行符。
答案 1 :(得分:1)
我不知道为什么你试图逃避\ n,当它正是你正在寻找的时候。这是换行符char,使用它作为普通char,不要被反斜杠打动。
"A\nC".replaceAll("\n", "B").replaceAll("B", "\n") ==> "A\nC";