Java String新行

Md.*_*san 124 java string newline

我有类似的字符串

"I am a boy".
Run Code Online (Sandbox Code Playgroud)

我想像这样打印

"I 
am 
a
boy".
Run Code Online (Sandbox Code Playgroud)

有谁能够帮我?

Pri*_*ley 135

System.out.println("I\nam\na\nboy");

System.out.println("I am a boy".replaceAll("\\s+","\n"));

System.out.println("I am a boy".replaceAll("\\s+",System.getProperty("line.separator"))); // portable way
Run Code Online (Sandbox Code Playgroud)


小智 110

您还可以使用System.lineSeparator():

String x = "Hello," + System.lineSeparator() + "there";
Run Code Online (Sandbox Code Playgroud)

  • 我认为它是System.lineSeparator(),而不是System.lineSeperator(). (12认同)
  • 在较旧的Java版本中:`System.getProperty("line.separator")`. (7认同)
  • 快捷方式: `String x = "Hello, %n there";` 。在“%n”周围添加空格只是为了便于阅读。 (2认同)

Lev*_*glu 42

System.out.printf("I %n am %n a %n boy");
Run Code Online (Sandbox Code Playgroud)

产量

I 
 am 
 a 
 boy
Run Code Online (Sandbox Code Playgroud)

说明

最好将其%n用作独立于操作系统的新行字符,而\n不是使用它System.lineSeparator()

为什么要使用%n,因为在每个操作系统上,新行指的是一组不同的字符;

Unix and modern Mac's   :   LF     (\n)
Windows                 :   CR LF  (\r\n)
Older Macintosh Systems :   CR     (\r)
Run Code Online (Sandbox Code Playgroud)

LF是的缩写,换行CR是的缩写回车.转义字符写在括号内.因此,在每个操作系统上,新行代表系统特有的内容.%n与OS无关,它是可移植的.它代表\nUnix系统或\r\nWindows系统等.因此,请勿使用\n,而是使用%n.


Rip*_*sim 24

它可以通过几种方式完成.我提到了两种简单的方法.

  1. 非常简单的方法如下:

    System.out.println("I\nam\na\nboy");
    
    Run Code Online (Sandbox Code Playgroud)
  2. 它也可以通过连接完成,如下所示:

    System.out.println("I" + '\n' + "am" + '\n' + "a" + '\n' + "boy");
    
    Run Code Online (Sandbox Code Playgroud)


And*_*rdi 14

尝试:

System.out.println("I\nam\na\nboy");
Run Code Online (Sandbox Code Playgroud)


Amo*_*itz 11

为了使代码可移植到任何系统,我会使用:

public static String newline = System.getProperty("line.separator");
Run Code Online (Sandbox Code Playgroud)

这很重要,因为不同的操作系统对换行使用不同的符号:Windows使用"\ r \n",Classic Mac使用"\ r",Mac和Linux都使用"\n".

评论员 - 如果我错了,请纠正我...


Sur*_*r D 7

\n 用于分隔线;

例:

System.out.print("I" +'\n'+ "am" +'\n'+ "boy"); 
Run Code Online (Sandbox Code Playgroud)

结果:

I
am
boy
Run Code Online (Sandbox Code Playgroud)

  • 请先阅读其他答案.你的解决方案已经存在. (4认同)

Ste*_*han 6

如果您只想在控制台中打印换行符,可以使用'\n'作为换行符.

如果你想在swing组件中打破文本,你可以使用html:

String s = "<html>first line<br />second line</html>";
Run Code Online (Sandbox Code Playgroud)


Hac*_*chi 5

如果您希望使用非特定的代码,则应为每个单词使用println

System.out.println("I");
System.out.println("am");
System.out.println("a");
System.out.println("boy");
Run Code Online (Sandbox Code Playgroud)

因为Windows使用"\ r \n"作为换行符,而unixoid系统只使用"\n"

println总是使用正确的

  • 写入太多System.out.println()不是一个好的解决方案 (2认同)

Ale*_*tes 5

%n使用像这样的格式化程序怎么样String.format()?:

String s = String.format("I%nam%na%nboy");
Run Code Online (Sandbox Code Playgroud)

正如这个答案所说,它从 java 1.5 开始可用,是System.getProperty("line.separator")or的另一种方式System.lineSeparator(),就像这两个一样,是OS dependent


Ban*_*nta 5

独立于平台的换行符:

finalString = "physical" + System.lineSeparator() + "distancing";
System.out.println(finalString);
Run Code Online (Sandbox Code Playgroud)

输出:

physical
distancing
Run Code Online (Sandbox Code Playgroud)

笔记:

  • 爪哇 6: System.getProperty("line.separator")
  • Java 7 及以上: System.lineSeparator()