Java String nowa linia


Odpowiedzi:




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.



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");
    


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


7

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

Przykład:

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

Wynik:

I
am
boy

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>";

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


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 .


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()

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!


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);
}

0

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

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


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


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.


-1

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


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,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.