Nuova linea di stringhe Java


Risposte:


142
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

@the_prole ha spiegato qui
Prince John Wesley l'

La terza opzione è la migliore per la portabilità.
Amos Bordowitz,


49

Esempio

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

Produzione

I 
 am 
 a 
 boy

Spiegazione

È preferibile utilizzare %ncome carattere di nuova riga indipendente dal sistema operativo anziché \ned è più semplice dell'usoSystem.lineSeparator()

Perché usare %n, perché su ciascun sistema operativo, la nuova riga si riferisce a un diverso set di caratteri;

Unix and modern Mac's   :   LF     (\n)
Windows                 :   CR LF  (\r\n)
Older Macintosh Systems :   CR     (\r)

LF è l'acronimo di Line Feed e CR è l'acronimo di Carriage Return . I caratteri di escape sono scritti tra parentesi. Quindi su ogni sistema operativo, la nuova linea rappresenta qualcosa di specifico per il sistema. %nè indipendente dal sistema operativo, è portatile. Sta per \nsistemi Unix o \r\nWindows e così via. Pertanto, non utilizzare \n, utilizzare invece %n.


1
vedere la sezione Separatore di riga nei documenti
Lu55,

29

Può essere fatto in diversi modi. Sto citando 2 modi semplici.

  1. Modo molto semplice come di seguito:

    System.out.println("I\nam\na\nboy");
  2. Può anche essere fatto con concatenazione come di seguito:

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


13

Per rendere il codice portatile su qualsiasi sistema, vorrei usare:

public static String newline = System.getProperty("line.separator");

Questo è importante perché diversi sistemi operativi usano notazioni diverse per newline: Windows usa "\ r \ n", Classic Mac usa "\ r" e Mac e Linux usano entrambi "\ n".

Commentatori - per favore correggimi se sbaglio su questo ...


7

\n è usato per creare una linea separata;

Esempio:

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

Risultato:

I
am
boy

4
Per favore leggi prima le altre risposte. La tua soluzione è già lì.
Honza Zidek,

6

Se vuoi semplicemente stampare una nuova riga nella console puoi usare ´ \ n´ per le nuove righe.

Se vuoi rompere il testo nei componenti swing puoi usare html:

String s = "<html>first line<br />second line</html>";

Questo funziona per me. E sto usando il carattere Unicode. Funziona meglio.
Sahan,

5

Se vuoi avere il tuo codice non specifico, dovresti usare println per ogni parola

System.out.println("I");
System.out.println("am");
System.out.println("a");
System.out.println("boy");

perché Windows usa "\ r \ n" come sistemi newline e unixoid usano solo "\ n"

println usa sempre quello corretto


3
Questa non è una buona soluzione per scrivere troppi System.out.println ()
Ripon Al Wasim

@op Ricorda che println()aggiunge un carattere di nuova riga alla fine della stringa (non all'inizio).
Wolfpack'08,

@Hachi System.lineSeparator()o System.getProperty("line.separator")può essere utilizzato per rendere indipendente il sistema di codice.
Ashish Kumar,

3

Che ne dici di %nusare un formatter simile String.format()?:

String s = String.format("I%nam%na%nboy");

Come dice questa risposta , è disponibile da Java 1.5 ed è un altro modo per System.getProperty("line.separator")o System.lineSeparator()e, come questi due, è indipendente dal sistema operativo .


2

Interruzioni di linea indipendenti dalla piattaforma

finalString = "bandham" + System.lineSeparator() + "manikanta"; System.out.println(finalString);

Produzione: bandham manikanta

Appunti: Java 6: System.getProperty("line.separator") Java 7 & above: System.lineSeparator()


1

Esempio di programma completo, con una svolta divertente:

Apri un nuovo documento vuoto e salvalo come %yourJavaDirectory%/iAmABoy/iAmABoy.java. "iAmABoy" è il nome della classe.

Incolla il seguente codice e leggilo. Ricorda, sono un principiante, quindi apprezzo tutto il 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!");
    } 

}

Ora, in terminal / cmd, cerca %yourJavaDirectory%/iAmABoye digita:

javac iAmABoy.java
java iAmABoy I am a boy

Puoi sostituire gli arg I am a boycon qualsiasi cosa!


Non hai bisogno di due anelli. Passare argsdirettamente nlSeparated()o fare nlSeparated()prendere uno scalare Stringinvece di un array. La prima opzione è probabilmente migliore. Inoltre, stampa la tua firma con printlninvece di print.
Fisico pazzo,

In main, sostituisci for (String arg : args) { nlSeparated(arg); }con just nlSeparated(args);. nlSeparatedaccetta già un elenco di Strings. Per una spiegazione migliore, vedere qui: stackoverflow.com/a/12534579/2988730
Fisico pazzo

1

Fai una scissione.

String string = "I am a boy";
for (String part : string.split(" ")) {
    System.out.println(part);
}

0

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

Funziona Dà uno spazio anche prima di inserire il personaggio


0

Io uso questo codice 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);
    }
}

con il terminale posso usare arg I\\nam\\na\\boyper fare la System.out.printlnstampa

I
am
a
boy

inserisci qui la descrizione dell'immagine


-1

puoi usare il <br>tag nella tua stringa per mostrare in pagine html


2
È sempre una cattiva idea incorporare il markup nell'output. Non sai mai quale tecnologia di visualizzazione stanno utilizzando i tuoi utenti. È meglio mantenerlo il più generico possibile e, se necessario, utilizzare un filtro di formattazione per la visualizzazione.
TMN,

Ho detto che funziona solo nella pagina html, è solo un suggerimento per chi vuole mostrare un semplice testo nelle pagine web.
Mehdi Roostaeian
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.