Ich habe String wie
"I am a boy".
Ich möchte so drucken
"I
am
a
boy".
Kann mir jemand helfen?
Ich habe String wie
"I am a boy".
Ich möchte so drucken
"I
am
a
boy".
Kann mir jemand helfen?
Antworten:
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
Sie können auch verwenden System.lineSeparator()
:
String x = "Hello," + System.lineSeparator() + "there";
System.getProperty("line.separator")
.
String x = "Hello, %n there";
. %n
Nur aus Gründen der Lesbarkeit wurden Leerzeichen hinzugefügt .
System.out.printf("I %n am %n a %n boy");
I
am
a
boy
Es ist besser, es %n
als betriebssystemunabhängiges Zeichen für neue Zeilen zu verwenden, \n
und 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. %n
ist betriebssystemunabhängig, es ist portabel. Es steht für \n
auf Unix-Systemen oder \r\n
auf Windows-Systemen und so weiter. Verwenden Sie also nicht \n
, sondern verwenden Sie %n
.
Dies kann auf verschiedene Arten erfolgen. Ich erwähne zwei einfache Wege.
Sehr einfacher Weg wie folgt:
System.out.println("I\nam\na\nboy");
Dies kann auch mit der folgenden Verkettung erfolgen:
System.out.println("I" + '\n' + "am" + '\n' + "a" + '\n' + "boy");
Versuchen:
System.out.println("I\nam\na\nboy");
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 ...
\n
wird zum Erstellen einer separaten Zeile verwendet;
Beispiel:
System.out.print("I" +'\n'+ "am" +'\n'+ "boy");
Ergebnis:
I
am
boy
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>";
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
println()
am Ende der Zeichenfolge (nicht am Anfang) ein Zeilenumbruchzeichen hinzugefügt wird .
System.lineSeparator()
oder System.getProperty("line.separator")
kann verwendet werden, um das Codesystem unabhängig zu machen.
Was ist %n
mit 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 .
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()
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%/iAmABoy
und geben Sie Folgendes ein:
javac iAmABoy.java
java iAmABoy I am a boy
Sie können die Argumente I am a boy
durch alles ersetzen !
args
direkt an einen Skalar übergeben nlSeparated()
oder nlSeparated()
einen Skalar String
anstelle eines Arrays verwenden. Erste Option ist wahrscheinlich besser. Drucken Sie auch Ihre Unterschrift mit println
statt print
.
main
ersetzen for (String arg : args) { nlSeparated(arg); }
durch nur nlSeparated(args);
. nlSeparated
akzeptiert bereits eine Liste von String
s. Eine bessere Erklärung finden Sie hier: stackoverflow.com/a/12534579/2988730
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.println
auszudrucken
I
am
a
boy
Sie können das <br>
Tag in Ihrer Zeichenfolge verwenden, um es in HTML-Seiten anzuzeigen