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?
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?
Odpowiedzi:
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";
System.getProperty("line.separator")
.
String x = "Hello, %n there";
. Dodano spacje dookoła %n
tylko ze względu na czytelność.
System.out.printf("I %n am %n a %n boy");
I
am
a
boy
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
.
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");
Próbować:
System.out.println("I\nam\na\nboy");
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ę ...
\n
służy do tworzenia oddzielnej linii;
Przykład:
System.out.print("I" +'\n'+ "am" +'\n'+ "boy");
Wynik:
I
am
boy
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>";
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
println()
dodaje znak nowej linii na końcu ciągu (nie na początku).
System.lineSeparator()
lub System.getProperty("line.separator")
może służyć do uniezależnienia systemu kodu.
A co z %n
użyciem programu formatującego, takiego jak String.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")
lub System.lineSeparator()
i, podobnie jak ten, jest niezależny od systemu operacyjnego .
Podziały wiersza niezależne od platformy
finalString = "physical" + System.lineSeparator() + "distancing";
System.out.println(finalString);
Wynik:
physical
distancing
Notes:
Java 6: System.getProperty("line.separator")
Java 7 & above: System.lineSeparator()
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:
javac iAmABoy.java
java iAmABoy I am a boy
Możesz zastąpić argumenty I am a boy
czymkolwiek!
args
bezpośrednio do tablicy, nlSeparated()
albo nlSeparated()
zastosuj wartość skalarną String
zamiast tablicy. Pierwsza opcja jest prawdopodobnie lepsza. Wydrukuj również swój podpis z println
zamiast print
.
main
zamień na for (String arg : args) { nlSeparated(arg); }
just nlSeparated(args);
. nlSeparated
już akceptuje listę String
s. Aby uzyskać lepsze wyjaśnienie, zobacz tutaj: stackoverflow.com/a/12534579/2988730
możesz użyć <br>
tagu w swoim ciągu do wyświetlania na stronach html