首页 > 解决方案 > 使用 %n 作为新行

问题描述

正如这篇文章中所推荐的那样:
https ://stackoverflow.com/a/38077906/12340711

最好使用 %n 作为独立于操作系统的换行符而不是 \n 并且比使用 System.lineSeparator() 更容易

但是,该功能对我不起作用:

\n

System.out.println("foo\nbar");
>>>foo
>>>bar

正常工作。

%n

System.out.println("foo%nbar");
>>>foo%nbar

不解释。

有人可以解释一下为什么%n不适合我吗?它可能不再受支持还是我错过了什么?

标签: javanewline

解决方案


Java 为您提供System.lineSeparator()常量。如果您使用println. \n如果您只是在玩代码,也可以在字符串中使用来换行。它既简单又快速。请注意,println只是将纯文本打印到控制台。

当您使用时printf,您实际上将在控制台输出之前java.util.Formatter使用 a来格式化字符串。可以在(Java 8 文档链接)找到所有详细信息: https ://docs.oracle.com/javase/8/docs/api/java/util/Formatter.htmljava.util.Formatter

因此,如果要使用 格式化字符串println,则需要先使用以下内容对其进行格式化java.util.Formatter

String formattedStr = String.format("%s = %d %n hello", "joe", 35);
System.out.println(formattedStr);

where%s是一个字符串,%d是一个整数和%n一个换行符(在上面的文档链接中描述)。

printf只是上面两行代码的快捷方式,其中String.format已经在内部printf实现。

System.out.printf("%s = %d %n hello", "joe", 35);

您还可以\nprintf字符串中使用:

System.out.printf("%s = %d \n hello", "joe", 35);

最后,重要的是你要明白,在现实世界的项目中,如果你不使用 a (in a , use ) ,你应该总是System.lineSeparator()使用它。此外,您永远不应该将其用于实际项目。请改用日志框架。\njava.util.FormatterFormatter%nSystem.out.*


推荐阅读