java - 替换字符串中的\n

标签 java string replaceall

与我类似的问题有几个答案,但我已经尝试了其中的几个,但它们都不起作用。我一定是在做傻事。

我有

String newline = System.getProperty("line.separator");
String content = "Test\n another line\n";
if(content.contains("\\n")) {
    content = content.replaceAll("(\\n)", newline);
    System.out.print(content);
}

我还在正则表达式中尝试了“\n”和“\\n”。使用 replaceAll 内容保持不变。

最佳答案

好的事实:

  • \r是CR,U+000D
  • \n是一个LF,U+000A

那些你可以放在字符串中的字符

String s = "line 1.\nline 2.\n";
String newline = System.getProperty("line.separator");

newline 可以是 "\n"(1 个字符)或 "\r\n"(2 个字符)或其他.

如果您阅读此文本,首先阅读一个反斜杠,然后阅读一个 n,它将在代码中:

String nl = "\\n"; // Two chars, an escaped backslash and a `n`.
String nl = "\\" + 'n'; // Two chars, an escaped backslash and a `n`.

如果您想用一个真正的换行符替换这两个字符:

s = s.replace("\\n", "\n");
s = s.replace("\\n", newline); // Platform dependent

现在 java regex 仍然更复杂,因为它使用反斜杠转义 regex 字母,而在 Strings 中反斜杠本身被转义:

你在这里不需要正则表达式 replaceAll/replaceFirst,但它会是:

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

包含两个反斜杠的模式:正则表达式转义一个反斜杠。

关于java - 替换字符串中的\n,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32352256/

相关文章:

groovy - 替换 groovy 中的转义引号

Java 用变量文本替换字符串

java - HTTP 客户端 - HTTP 405 错误 "Method not allowed"。我发送了 HTTP Post,但由于某种原因发送了 HTTP Get

java - 无法调用网络服务

c# - 使用格式模板解析字符串?

Java - 正则表达式中的转义 + 字符

java - JOptionPane背景颜色

java - 使用 rabbitmq 了解 spring cloud 消息传递

mysql - 分割字符串并删除包含子字符串的项目

Java的replaceAll和正则表达式