1. 概述

在编程中,我们经常需要对字符串进行格式化或生成格式化的文本输出。很多时候,为了美观或结构清晰,我们需要在字符串中插入换行符来控制输出格式。

本文将介绍如何在 Java 中正确使用换行符。

2. 在字符串中添加换行符

不同操作系统使用不同的字符来表示新行的开始:

  • Linux / Unix / 新版 macOS\n(Line Feed,LF)
  • Windows\r\n(Carriage Return + Line Feed,CRLF)
  • ⚠️ 旧版 macOS\r(现已基本不用)

因此,在 Java 中添加换行符的方式可以是直接拼接 \n\r\r\n

String line1 = "Humpty Dumpty sat on a wall.";
String line2 = "Humpty Dumpty had a great fall.";
String rhyme = line1 + "\n" + line2;

但这种写法存在一个明显的问题:平台依赖性

2.1. 使用 CRLF 换行符

不同系统使用的换行符不同,因此上面的代码在不同平台上表现不一致:

  • Unix/Linux/macOS:使用 \n
  • Windows:使用 \r\n
  • 旧 Mac:使用 \r

这种方式虽然简单粗暴,但不利于跨平台兼容。

2.2. 使用平台无关的换行符

为了让代码在不同系统上都能正确换行,推荐使用 Java 提供的系统属性来获取当前平台的换行符。

方式一:使用 System.lineSeparator()

rhyme = line1 + System.lineSeparator() + line2;

方式二:使用 System.getProperty("line.separator")

rhyme = line1 + System.getProperty("line.separator") + line2;

这两种方式都可以获取到当前系统对应的换行符,推荐优先使用 System.lineSeparator(),语义更清晰。

2.3. 使用平台无关的格式化换行符

如果你在使用 System.out.printfString.format 等格式化方法,可以直接使用 %n 来表示换行符:

rhyme = "Humpty Dumpty sat on a wall.%nHumpty Dumpty had a great fall.";

⚠️ 注意:%n 是平台无关的换行符,不能用在普通字符串拼接中,只能用于格式化方法中。

3. 在 HTML 页面中添加换行符

如果你的字符串最终会显示在 HTML 页面上,情况就有所不同了。HTML 忽略普通的换行符(\n),因此需要使用 HTML 特定的换行方式。

3.1. 使用 HTML 换行标签 <br>

最常见的方式是使用 <br> 标签:

rhyme = line1 + "<br>" + line2;

<br> 标签适用于绝大多数 HTML 元素,如 <body><p><div>
❌ 但注意:它在 <textarea> 中不会生效

3.2. 使用换行符 \n

如果你的内容包裹在 <pre><textarea> 标签中,则可以直接使用 \n 换行:

rhyme = line1 + "\n" + line2;

3.3. 使用 Unicode 换行符

你也可以使用 Unicode 字符来表示换行:

  • &#13; 表示 Carriage Return(\r
  • &#10; 表示 Line Feed(\n

例如在 <textarea> 中使用:

rhyme = line1 + "&#10;" + line2;

<pre> 标签中,以下两种写法都有效:

rhyme = line1 + "&#10;" + line2;
rhyme = line1 + "&#13;&#10;" + line2;

4. \n\r 的区别

  • \n:ASCII 10,表示 Line Feed(LF)
  • \r:ASCII 13,表示 Carriage Return(CR)

虽然它们都表示“换行”,但不同系统使用不同方式:

系统类型 换行符
Unix/Linux/macOS \n
Windows \r\n
旧版 Mac \r

在编写 Java 程序时,如果不确定运行环境,建议统一使用 System.lineSeparator(),避免踩坑。

5. 总结

本文介绍了在 Java 中添加换行符的几种常见方式:

  • 平台相关方式:\n\r\r\n
  • 平台无关方式:System.lineSeparator()System.getProperty("line.separator")
  • 格式化方式:%n
  • HTML 中的换行:<br>\n(特定标签)、&#10;

✅ 推荐做法:使用 System.lineSeparator() 保证跨平台兼容性
✅ 推荐做法:在 HTML 中使用 <br> 或特定标签配合 \n

完整代码示例可参考:GitHub 项目地址


原始标题:Adding a Newline Character to a String in Java