Java String nowa linia

137

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?

Md. Rashedul Hasan
źródło

Odpowiedzi:

144
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
Książę John Wesley
źródło
@the_prole wyjaśnił tutaj
Prince John Wesley
Trzecia opcja jest najlepsza do przenoszenia.
Amos Bordowitz
120

Możesz również użyć System.lineSeparator():

String x = "Hello," + System.lineSeparator() + "there";
Emalton
źródło
8
W starszych wersjach Java: System.getProperty("line.separator").
ROMANIA_engineer
1
Skrót: String x = "Hello, %n there";. Dodano spacje dookoła %ntylko ze względu na czytelność.
Manoj Shrestha
50

Przykład

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

Wynik

I 
 am 
 a 
 boy

Wyjaśnienie

Lepiej jest używać %njako niezależnego od systemu operacyjnego znaku nowej linii zamiast \ni 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. %njest niezależny od systemu operacyjnego, jest przenośny. To oznacza \nw systemach Unix lub \r\nw systemach Windows i tak dalej. Dlatego nie używaj \n, zamiast tego użyj %n.

Levent Divilioglu
źródło
1
zobacz sekcję Separator
wierszy
30

Można to zrobić na kilka sposobów. Wymieniam 2 proste sposoby.

  1. Bardzo prosty sposób, jak poniżej:

    System.out.println("I\nam\na\nboy");
    
  2. Można to również zrobić za pomocą konkatenacji, jak poniżej:

    System.out.println("I" + '\n' + "am" + '\n' + "a" + '\n' + "boy");
    
Ripon Al Wasim
źródło
15

Próbować:

System.out.println("I\nam\na\nboy");
Andrea Girardi
źródło
13

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ę ...

Amos Bordowitz
źródło
7

\n służy do tworzenia oddzielnej linii;

Przykład:

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

Wynik:

I
am
boy
Surendar D.
źródło
4
Przeczytaj najpierw inne odpowiedzi. Twoje rozwiązanie już tam jest.
Honza Zidek
6

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>";
Stephan
źródło
To działa dla mnie. Używam czcionki Unicode. To działa lepiej.
Sahan,
5

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

Hachi
źródło
3
To nie jest dobre rozwiązanie, aby napisać zbyt wiele System.out.println ()
Ripon Al Wasim
@op Pamiętaj, że println()dodaje znak nowej linii na końcu ciągu (nie na początku).
Wolfpack'08
@Hachi System.lineSeparator()lub System.getProperty("line.separator")może służyć do uniezależnienia systemu kodu.
Ashish Kumar
3

A co z %nuż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 .

Alex Sifuentes
źródło
3

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()
Bandham Manikanta
źródło
1

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%/iAmABoyi wpisz:

javac iAmABoy.java
java iAmABoy I am a boy

Możesz zastąpić argumenty I am a boyczymkolwiek!

Wolfpack'08
źródło
Nie potrzebujesz dwóch pętli. Albo przejdź argsbezpośrednio do tablicy, nlSeparated()albo nlSeparated()zastosuj wartość skalarną Stringzamiast tablicy. Pierwsza opcja jest prawdopodobnie lepsza. Wydrukuj również swój podpis z printlnzamiast print.
Mad Physicist,
W mainzamień na for (String arg : args) { nlSeparated(arg); }just nlSeparated(args);. nlSeparatedjuż akceptuje listę Strings. Aby uzyskać lepsze wyjaśnienie, zobacz tutaj: stackoverflow.com/a/12534579/2988730
Mad Physicist
1

Idź na rozłam.

String string = "I am a boy";
for (String part : string.split(" ")) {
    System.out.println(part);
}
mrVoid
źródło
0

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

Działa to da jeden znak spacji również przed wprowadzeniem znaku

Tanushree
źródło
0

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\\boydo System.out.printlnwydrukowania

I
am
a
boy

wprowadź opis obrazu tutaj

Tung Duong
źródło
0

Oto jest !! Nowa linia jest znana jako CRLF (powrót karetki i nowy wiersz).

  • W przypadku Linuksa i Maca możemy użyć "\ n".
  • W systemie Windows możemy użyć „\ r \ n”.

Próba:

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

Wynik:
wynik

U mnie to zadziałało.

Sudha
źródło
-1

możesz użyć <br>tagu w swoim ciągu do wyświetlania na stronach html

Mehdi Roostaeian
źródło
2
Osadzanie znaczników w wynikach jest zawsze złym pomysłem. Nigdy nie wiesz, z jakiej technologii wyświetlania korzystają Twoi użytkownicy. Najlepiej, aby był jak najbardziej ogólny i w razie potrzeby użyj filtru formatującego do wyświetlania.
TMN
Powiedziałem, że działa tylko na stronie html, to tylko sugestia dla tych, którzy chcą pokazać prosty tekst na stronach internetowych.
Mehdi Roostaeian,