Java String neue Zeile

133

Ich habe String wie

"I am a boy".

Ich möchte so drucken

"I 
am 
a
boy".

Kann mir jemand helfen?

Md. Rashedul Hasan
quelle

Antworten:

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
Prinz John Wesley
quelle
@ the_prole hier
Prinz John Wesley
Die dritte Option eignet sich am besten für die Portabilität.
Amos Bordowitz
117

Sie können auch verwenden System.lineSeparator():

String x = "Hello," + System.lineSeparator() + "there";
Emalton
quelle
8
In den älteren Java-Versionen : System.getProperty("line.separator").
ROMANIA_engineer
1
Verknüpfung : String x = "Hello, %n there";. %nNur aus Gründen der Lesbarkeit wurden Leerzeichen hinzugefügt .
Manoj Shrestha
49

Beispiel

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

Ausgabe

I 
 am 
 a 
 boy

Erläuterung

Es ist besser, es %nals betriebssystemunabhängiges Zeichen für neue Zeilen zu verwenden, \nund es ist einfacher als die VerwendungSystem.lineSeparator()

Warum verwenden %n, da auf jedem Betriebssystem eine neue Zeile auf einen anderen Zeichensatz verweist;

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

LF ist das Akronym für Line Feed und CR ist das Akronym für Carriage Return . Die Escapezeichen werden in Klammern geschrieben. Auf jedem Betriebssystem steht eine neue Zeile für etwas Systemspezifisches. %nist betriebssystemunabhängig, es ist portabel. Es steht für \nauf Unix-Systemen oder \r\nauf Windows-Systemen und so weiter. Verwenden Sie also nicht \n, sondern verwenden Sie %n.

Levent Divilioglu
quelle
1
siehe
Zeilentrenner
29

Dies kann auf verschiedene Arten erfolgen. Ich erwähne zwei einfache Wege.

  1. Sehr einfacher Weg wie folgt:

    System.out.println("I\nam\na\nboy");
  2. Dies kann auch mit der folgenden Verkettung erfolgen:

    System.out.println("I" + '\n' + "am" + '\n' + "a" + '\n' + "boy");
Ripon Al Wasim
quelle
15

Versuchen:

System.out.println("I\nam\na\nboy");
Andrea Girardi
quelle
13

Um den Code auf jedes System portierbar zu machen, würde ich Folgendes verwenden:

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

Dies ist wichtig, da verschiedene Betriebssysteme unterschiedliche Notationen für Zeilenumbrüche verwenden: Windows verwendet "\ r \ n", Classic Mac verwendet "\ r" und Mac und Linux verwenden beide "\ n".

Kommentatoren - bitte korrigieren Sie mich, wenn ich mich irre ...

Amos Bordowitz
quelle
7

\n wird zum Erstellen einer separaten Zeile verwendet;

Beispiel:

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

Ergebnis:

I
am
boy
Surendar D.
quelle
4
Bitte lesen Sie zuerst andere Antworten. Ihre Lösung ist bereits da.
Honza Zidek
6

Wenn Sie einfach eine neue Zeile in der Konsole drucken möchten, können Sie ´ \ n´ für neue Zeilen verwenden.

Wenn Sie Text in Swing-Komponenten unterbrechen möchten, können Sie HTML verwenden:

String s = "<html>first line<br />second line</html>";
Stephan
quelle
Das funktioniert bei mir. Und ich benutze Unicode-Schrift. Das funktioniert besser.
Sahan
5

Wenn Sie Ihren Code os-unspezifisch haben möchten, sollten Sie für jedes Wort println verwenden

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

weil Windows "\ r \ n" als Zeilenumbruch verwendet und unixoide Systeme nur "\ n" verwenden

println verwendet immer den richtigen

Hachi
quelle
3
Dies ist keine gute Lösung, um zu viele System.out.println ()
Ripon Al Wasim
@op Denken Sie daran, dass println()am Ende der Zeichenfolge (nicht am Anfang) ein Zeilenumbruchzeichen hinzugefügt wird .
Wolfpack'08
@Hachi System.lineSeparator()oder System.getProperty("line.separator")kann verwendet werden, um das Codesystem unabhängig zu machen.
Ashish Kumar
3

Was ist %nmit einem Formatierer wie String.format()?

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

Wie diese Antwort sagt, ist es ab Java 1.5 verfügbar und ein anderer Weg zu System.getProperty("line.separator")oder System.lineSeparator()und wie diese beiden ist es unabhängig vom Betriebssystem .

Alex Sifuentes
quelle
2

Plattformunabhängige Zeilenumbrüche

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

Ausgabe: bandham manikanta

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

Bandham Manikanta
quelle
1

Vollständiges Programmbeispiel mit einer lustigen Wendung:

Öffnen Sie ein neues leeres Dokument und speichern Sie es unter %yourJavaDirectory%/iAmABoy/iAmABoy.java. "iAmABoy" ist der Klassenname.

Fügen Sie den folgenden Code ein und lesen Sie ihn durch. Denken Sie daran, ich bin ein Anfänger, daher freue ich mich über jedes Feedback!

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

}

Navigieren Sie nun in terminal / cmd zu %yourJavaDirectory%/iAmABoyund geben Sie Folgendes ein:

javac iAmABoy.java
java iAmABoy I am a boy

Sie können die Argumente I am a boydurch alles ersetzen !

Wolfpack'08
quelle
Sie benötigen keine zwei Schleifen. Entweder argsdirekt an einen Skalar übergeben nlSeparated()oder nlSeparated()einen Skalar Stringanstelle eines Arrays verwenden. Erste Option ist wahrscheinlich besser. Drucken Sie auch Ihre Unterschrift mit printlnstatt print.
Mad Physicist
In mainersetzen for (String arg : args) { nlSeparated(arg); }durch nur nlSeparated(args);. nlSeparatedakzeptiert bereits eine Liste von Strings. Eine bessere Erklärung finden Sie hier: stackoverflow.com/a/12534579/2988730
Mad Physicist
1

Machen Sie eine Trennung.

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

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

Dies funktioniert. Es wird auch ein Leerzeichen vor der Eingabe des Zeichens angegeben

Tanushree
quelle
0

Ich benutze diesen Code 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);
    }
}

Mit Terminal kann ich arg verwenden I\\nam\\na\\boy, um System.out.printlnauszudrucken

I
am
a
boy

Geben Sie hier die Bildbeschreibung ein

Tung Duong
quelle
-1

Sie können das <br>Tag in Ihrer Zeichenfolge verwenden, um es in HTML-Seiten anzuzeigen

Mehdi Roostaeian
quelle
2
Es ist immer eine schlechte Idee, Markup in Ihre Ausgabe einzubetten. Sie wissen nie, welche Anzeigetechnologie Ihre Benutzer verwenden. Halten Sie es am besten so allgemein wie möglich und verwenden Sie bei Bedarf einen Formatierungsfilter für die Anzeige.
TMN
Ich sagte, es funktioniert nur in HTML-Seiten, es ist nur ein Vorschlag für diejenigen, die einen einfachen Text auf Webseiten anzeigen möchten.
Mehdi Roostaeian