java新行替换

我想知道为什么我没有得到这个预期的结果:

String t = "1302248663033 nvieor\ngnroeignrieogi"; t.replaceAll("\n", ""); System.out.println(t); 

输出是:

 1302248663033 nvieor gnroeignrieogi 

所以我想知道为什么\n仍然存在。 有人知道吗? 在某种程度上是特别的吗?

编辑:

所以我遇到了将换行符与a匹配的问题。 在正则表达式中,没有意识到使用DOTALL选项,所以我将在这里添加需要做的事情以供将来参考:

 String text = null; text = FileUtils.readFileToString(inFile); Pattern p = Pattern.compile(".+?\n", Pattern.DOTALL); text = p.matcher(text).replaceAll(""); out.write(text); 

字符串是不可变的。 像replaceAll这样的字符串操作不会修改您调用它的实例,它们会返回新的String实例。 解决方案是将修改后的字符串分配给原始变量。

 t = t.replaceAll("\n", ""); 

是的, \n很特别。 它是一个代表换行符的转义序列。 您需要在字符串文字中对其进行转义,以便按照您希望的方式对其进行实际解释。 在序列之前附加\,使其看起来像这样:

 "\\n" 

现在你的程序应该是这样的:

 String t = "1302248663033 "; t = t.replaceAll("\\n", ""); System.out.println(t); 

当然如果字符串t来自某个地方而不是实际被你输入程序,那么你只需要在调用replaceAll()添加额外的斜杠

根据评论编辑。