java新行替换

del*_*met 4 java newline replaceall

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

String t = "1302248663033   <script language='javascript'>nvieor\ngnroeignrieogi</script>";
t.replaceAll("\n", "");
System.out.println(t);
Run Code Online (Sandbox Code Playgroud)

输出是:

1302248663033   <script language='javascript'>nvieor
gnroeignrieogi</script>
Run Code Online (Sandbox Code Playgroud)

所以我想知道为什么\n还有.有人知道吗?在某种程度上是特殊的吗?

编辑:

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

String text = null;
text = FileUtils.readFileToString(inFile);
Pattern p = Pattern.compile("<script language='javascript'>.+?</script>\n", Pattern.DOTALL);
text = p.matcher(text).replaceAll("");
out.write(text);
Run Code Online (Sandbox Code Playgroud)

Jon*_*ust 17

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

t = t.replaceAll("\n", "");
Run Code Online (Sandbox Code Playgroud)

  • 要在OS之间移植,请使用`System.getProperty("line.separator")`代替换行符. (3认同)