Mam taki ciąg
"I am a boy".
Chcę drukować w ten sposób
"I
am
a
boy".
Czy ktoś może mi pomóc?
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
Możesz również użyć
System.lineSeparator()
:String x = "Hello," + System.lineSeparator() + "there";
źródło
System.getProperty("line.separator")
.String x = "Hello, %n there";
. Dodano spacje dookoła%n
tylko ze względu na czytelność.Przykład
System.out.printf("I %n am %n a %n boy");
Wynik
Wyjaśnienie
Lepiej jest używać
%n
jako niezależnego od systemu operacyjnego znaku nowej linii zamiast\n
i jest to łatwiejsze niż używanieSystem.lineSeparator()
Dlaczego warto używać
%n
, ponieważ w każdym systemie operacyjnym nowa linia odnosi się do innego zestawu znaków;Unix and modern Mac's : LF (\n) Windows : CR LF (\r\n) Older Macintosh Systems : CR (\r)
LF to akronim Line Feed, a CR to akronim Carriage Return . Znaki ucieczki są zapisane w nawiasach. Tak więc w każdym systemie operacyjnym nowa linia oznacza coś specyficznego dla systemu.
%n
jest niezależny od systemu operacyjnego, jest przenośny. To oznacza\n
w systemach Unix lub\r\n
w systemach Windows i tak dalej. Dlatego nie używaj\n
, zamiast tego użyj%n
.źródło
Można to zrobić na kilka sposobów. Wymieniam 2 proste sposoby.
Bardzo prosty sposób, jak poniżej:
System.out.println("I\nam\na\nboy");
Można to również zrobić za pomocą konkatenacji, jak poniżej:
System.out.println("I" + '\n' + "am" + '\n' + "a" + '\n' + "boy");
źródło
Próbować:
System.out.println("I\nam\na\nboy");
źródło
Aby kod był przenośny do dowolnego systemu, użyłbym:
public static String newline = System.getProperty("line.separator");
Jest to ważne, ponieważ różne systemy operacyjne używają różnych notacji dla nowej linii: Windows używa "\ r \ n", Klasyczny Mac używa "\ r", a Mac i Linux używają "\ n".
Komentatorzy - proszę mnie poprawić, jeśli się mylę ...
źródło
\n
służy do tworzenia oddzielnej linii;Przykład:
System.out.print("I" +'\n'+ "am" +'\n'+ "boy");
Wynik:
źródło
Jeśli chcesz po prostu wydrukować znak nowej linii w konsoli, możesz użyć ´ \ n´ dla nowych linii.
Jeśli chcesz łamać tekst w komponentach swing, możesz użyć html:
String s = "<html>first line<br />second line</html>";
źródło
Jeśli chcesz, aby twój kod był niespecyficzny dla systemu operacyjnego, powinieneś użyć println dla każdego słowa
System.out.println("I"); System.out.println("am"); System.out.println("a"); System.out.println("boy");
ponieważ Windows używa "\ r \ n", a systemy nowej linii używają tylko "\ n"
println zawsze używa poprawnego
źródło
println()
dodaje znak nowej linii na końcu ciągu (nie na początku).System.lineSeparator()
lubSystem.getProperty("line.separator")
może służyć do uniezależnienia systemu kodu.A co z
%n
użyciem programu formatującego, takiego jakString.format()
?:String s = String.format("I%nam%na%nboy");
Jak mówi ta odpowiedź , jest dostępny w java 1.5 i jest innym sposobem na
System.getProperty("line.separator")
lubSystem.lineSeparator()
i, podobnie jak ten, jest niezależny od systemu operacyjnego .źródło
finalString = "physical" + System.lineSeparator() + "distancing"; System.out.println(finalString);
Wynik:
Notes: Java 6: System.getProperty("line.separator") Java 7 & above: System.lineSeparator()
źródło
Pełny przykład programu z zabawnym akcentem:
Otwórz nowy pusty dokument i zapisz go jako
%yourJavaDirectory%/iAmABoy/iAmABoy.java
. Nazwa klasy to „iAmABoy”.Wklej następujący kod i przeczytaj go. Pamiętaj, jestem początkującym, więc doceniam każdą opinię!
//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!"); } }
Teraz w terminalu / cmd przejdź do
%yourJavaDirectory%/iAmABoy
i wpisz:Możesz zastąpić argumenty
I am a boy
czymkolwiek!źródło
args
bezpośrednio do tablicy,nlSeparated()
albonlSeparated()
zastosuj wartość skalarnąString
zamiast tablicy. Pierwsza opcja jest prawdopodobnie lepsza. Wydrukuj również swój podpis zprintln
zamiastprint
.main
zamień nafor (String arg : args) { nlSeparated(arg); }
justnlSeparated(args);
.nlSeparated
już akceptuje listęString
s. Aby uzyskać lepsze wyjaśnienie, zobacz tutaj: stackoverflow.com/a/12534579/2988730Idź na rozłam.
String string = "I am a boy"; for (String part : string.split(" ")) { System.out.println(part); }
źródło
System.out.println ("I \ nam \ na \ nboy");
Działa to da jeden znak spacji również przed wprowadzeniem znaku
źródło
Używam tego kodu
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); } }
z terminalem mogę użyć arg
I\\nam\\na\\boy
doSystem.out.println
wydrukowaniaźródło
Oto jest !! Nowa linia jest znana jako CRLF (powrót karetki i nowy wiersz).
Próba:
System.out.println("I\r\nam\r\na\r\nboy");
Wynik:
U mnie to zadziałało.
źródło
możesz użyć
<br>
tagu w swoim ciągu do wyświetlania na stronach htmlźródło