Java String新行


Answers:




49

System.out.printf("I %n am %n a %n boy");

输出量

I 
 am 
 a 
 boy

说明

最好将其%n用作与操作系统无关的换行字符,而不是,\n并且比使用它更容易System.lineSeparator()

为什么使用%n,因为在每个OS上,换行符都是指一组不同的字符;

Unix and modern Mac's   :   LF     (\n)
Windows                 :   CR LF  (\r\n)
Older Macintosh Systems :   CR     (\r)

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


1
行分隔符节的文档
Lu55

29

可以通过几种方法完成。我要说的是2种简单方法。

  1. 很简单的方法如下:

    System.out.println("I\nam\na\nboy");
  2. 也可以通过以下连接来完成:

    System.out.println("I" + '\n' + "am" + '\n' + "a" + '\n' + "boy");


13

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

public static String newline = System.getProperty("line.separator");

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

评论员-如果我在此方面做错了,请纠正我...


7

\n 用于制作单独的行;

例:

System.out.print("I" +'\n'+ "am" +'\n'+ "boy"); 

结果:

I
am
boy

4
请先阅读其他答案。您的解决方案已经在那里。
Honza Zidek

6

如果您只想在控制台中打印换行符,则可以对换行符使用“ \ n”。

如果要在Swing组件中中断文本,可以使用html:

String s = "<html>first line<br />second line</html>";

这对我有用。我正在使用unicode字体。这样效果更好。
萨汉

5

如果您想让代码使用OS-unspecific,则应为每个单词使用println

System.out.println("I");
System.out.println("am");
System.out.println("a");
System.out.println("boy");

因为Windows使用“ \ r \ n”作为换行符,而unixoid系统仅使用“ \ n”

println始终使用正确的


3
这不是写太多System.out.println()的好方法
Ripon Al Wasim 2013年

@op请记住,在字符串println()末尾(不是开头)添加了换行符。
Wolfpack'08 2014年

@Hachi,System.lineSeparator()System.getProperty("line.separator")可用于使代码系统独立。
Ashish Kumar

3

如何%n使用像这样的格式化程序String.format()呢:

String s = String.format("I%nam%na%nboy");

就像这个答案说的那样,它可以从Java 1.5中获得,是System.getProperty("line.separator")or的另一种方式,System.lineSeparator()并且像这两种方式一样,它与OS无关


2

与平台无关的换行符

finalString = "bandham" + System.lineSeparator() + "manikanta"; System.out.println(finalString);

输出: bandham manikanta

笔记: Java 6: System.getProperty("line.separator") Java 7 & above: System.lineSeparator()


1

完整的程序示例,有趣的是:

打开一个新的空白文档并将其另存为%yourJavaDirectory%/iAmABoy/iAmABoy.java。“ iAmABoy”是类名。

将以下代码粘贴并通读。记住,我是一个初学者,所以我感谢所有反馈!

//The class name should be the same as your Java-file and directory name.
class iAmABoy {

    //Create a variable number of String-type arguments, "strs"; this is a useful line of code worth memorizing.
    public static void nlSeparated(String... strs) {

        //Each argument is an str that is printed.
        for (String str : strs) {

            System.out.println(str);

        }

    }

    public static void main(String[] args) {

        //This loop uses 'args' .  'Args' can be accessed at runtime.  The method declaration (above) uses 'str', but the method instances (as seen below) can take variables of any name in the place of 'str'.
        for (String arg : args) {

            nlSeparated(arg);

        }

        //This is a signature.  ^^
        System.out.print("\nThanks, Wolfpack08!");
    } 

}

现在,在终端/ cmd中,浏览%yourJavaDirectory%/iAmABoy并键入:

javac iAmABoy.java
java iAmABoy I am a boy

您可以I am a boy用任何东西替换args !


您不需要两个循环。args直接传递给标量,nlSeparated()或者直接nlSeparated()获取标量String而不是数组。第一种选择可能更好。另外,使用println代替来打印您的签名print
疯狂物理学家2014年

main,更换for (String arg : args) { nlSeparated(arg); }nlSeparated(args);nlSeparated已经接受的清单String。有关更好的解释,请参见此处:stackoverflow.com/a/12534579/2988730
Mad Physicist 2016年

1

去分裂。

String string = "I am a boy";
for (String part : string.split(" ")) {
    System.out.println(part);
}

0

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

这项工作它将在输入字符之前也给一个空格字符


0

我用这个代码 String result = args[0].replace("\\n", "\n");

public class HelloWorld {

    public static void main(String[] args) {
        String result = args[0].replace("\\n", "\n");
        System.out.println(result);
    }
}

与终端,我可以使用arg I\\nam\\na\\boy进行System.out.println打印

I
am
a
boy

在此处输入图片说明


-1

您可以<br>在字符串中使用标记以在html页面中显示


2
在输出中嵌入标记始终是一个坏主意。您永远不会知道您的用户正在使用哪种显示技术。最好使它尽可能通用,并在需要时使用格式过滤器进行显示。
TMN

我说过它只适用于html页面,这只是对那些想要在网页中显示简单文本的人的建议。
Mehdi Roostaeian
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.