java replaceAll 不适用于 \n 字符

Posted

技术标签:

【中文标题】java replaceAll 不适用于 \\n 字符【英文标题】:java replaceAll not working for \n charactersjava replaceAll 不适用于 \n 字符 【发布时间】:2013-09-22 19:25:12 【问题描述】:

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

John

理发师

这是我的代码

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

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

【问题讨论】:

我认为使用 replaceAll("\\\\n","\\n"); 【参考方案1】:

你需要做的:

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

replaceAll 方法的第一个参数需要一个正则表达式。在 java 字符串中传递 2 \ 时,您实际上传递了一个。问题是\ 也是正则表达式中的转义字符,因此\n 的正则表达式实际上是\\n,因此您需要两次添加额外的\

【讨论】:

【参考方案2】:

由于正则表达式中的\n(甚至是原始换行符U+000A)被解释为换行符,您需要\\n(转义\)来指定斜杠\,后跟@987654325 @。

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

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

String output = inputString.replaceAll("\\\\n", "\n");
//                                      \\n      U+000A

【讨论】:

当我尝试这种方式时,它的工作,String x="x\ny";字符串 y=x.replaceAll("\\n", "\n"); System.out.println(y); @javaBeginner:您的原始字符串已经包含新行。 不是和OP一样吗? @javaBeginner: No. OP 的原始字符串包含一个\ 后跟n,这意味着在Java 文字中,它将是"something\\nsomething" 我很困惑,仍然为这个答案+1【参考方案3】:

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

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

【讨论】:

【参考方案4】:

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

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

【讨论】:

以上是关于java replaceAll 不适用于 \n 字符的主要内容,如果未能解决你的问题,请参考以下文章

java中换行字符怎么用?

使用scanner类更改文本文件中的特定文本(java)

浅谈java中replace和replaceAll的区别

浅谈java中replace和replaceAll的区别

浅谈java中replace和replaceAll的区别

Java 正则表达式 replaceAll 多行