Java String บรรทัดใหม่


คำตอบ:


142
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

@the_prole อธิบายไว้ที่นี่
Prince John Wesley

ตัวเลือกที่สามเหมาะที่สุดสำหรับการพกพา
Amos Bordowitz

117

คุณยังสามารถใช้System.lineSeparator():

String x = "Hello," + System.lineSeparator() + "there";

8
ใน Java เวอร์ชันเก่า: System.getProperty("line.separator").
ROMANIA_engineer

1
ทางลัด: String x = "Hello, %n there";. เพิ่มช่องว่างรอบ ๆ%nเพื่อประโยชน์ในการอ่าน
Manoj Shrestha

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เป็นตัวย่อของสายการบินกลับมา อักขระ Escape ถูกเขียนไว้ในวงเล็บ ดังนั้นในแต่ละ OS บรรทัดใหม่จึงหมายถึงสิ่งที่เฉพาะเจาะจงสำหรับระบบ %nOS ไม่เชื่อเรื่องพระเจ้าเป็นแบบพกพา ย่อมาจาก\nระบบ Unix หรือ\r\nระบบ Windows เป็นต้น ดังนั้นอย่าใช้แทนการใช้งาน\n%n


1
ดูส่วน Line Separatorในเอกสาร
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");

สิ่งนี้มีความสำคัญเนื่องจาก OS ที่แตกต่างกันใช้สัญลักษณ์ที่แตกต่างกันสำหรับ newline: 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´สำหรับการขึ้นบรรทัดใหม่

หากคุณต้องการแบ่งข้อความในส่วนประกอบการแกว่งคุณสามารถใช้ html:

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

สิ่งนี้ใช้ได้กับฉัน และฉันใช้ฟอนต์ Unicode นี้ทำงานได้ดีขึ้น
Sahan

5

หากคุณต้องการให้โค้ดของคุณไม่ระบุเฉพาะคุณควรใช้ println สำหรับแต่ละคำ

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

เนื่องจาก Windows ใช้ "\ r \ n" เป็นระบบ newline และ unixoid ใช้เพียง "\ n"

println ใช้สิ่งที่ถูกต้องเสมอ


3
นี่ไม่ใช่ทางออกที่ดีในการเขียน System.out.println () มากเกินไป
Ripon Al Wasim

@op จำไว้ว่าprintln()เพิ่มอักขระขึ้นบรรทัดใหม่ที่ส่วนท้ายของสตริง (ไม่ใช่จุดเริ่มต้น)
Wolfpack'08

@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")หรือSystem.lineSeparator()และเช่นนี้ทั้งสองเป็นระบบปฏิบัติการที่เป็นอิสระ


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!");
    } 

}

ตอนนี้ใน terminal / cmd เรียกดู%yourJavaDirectory%/iAmABoyและพิมพ์:

javac iAmABoy.java
java iAmABoy I am a boy

คุณสามารถแทนที่ args I am a boyด้วยอะไรก็ได้!


คุณไม่จำเป็นต้องมีสองลูป ส่งผ่านไปargsโดยตรงnlSeparated()หรือทำnlSeparated()สเกลาร์Stringแทนอาร์เรย์ ตัวเลือกแรกน่าจะดีกว่า นอกจากนี้ยังพิมพ์ลายเซ็นของคุณกับแทนprintln print
Mad Physicist

ในmainแทนที่มีเพียงfor (String arg : args) { nlSeparated(arg); } ยอมรับรายชื่อs แล้ว สำหรับคำอธิบายที่ดีขึ้นโปรดดูที่นี่: stackoverflow.com/a/12534579/2988730nlSeparated(args);nlSeparatedString
Mad Physicist


0

System.out.println ( "ฉัน \ น้ำ \ 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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.