Java String nouvelle ligne


Réponses:


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 expliqué ici
Prince John Wesley

La troisième option est la meilleure pour la portabilité.
Amos Bordowitz


49

Exemple

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

Production

I 
 am 
 a 
 boy

Explication

Il est préférable de l'utiliser %ncomme caractère de nouvelle ligne indépendant du système d'exploitation au lieu de \net c'est plus facile que d'utiliserSystem.lineSeparator()

Pourquoi l'utiliser %n, car sur chaque OS, la nouvelle ligne se réfère à un ensemble différent de caractère (s);

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

LF est l'acronyme de Line Feed et CR est l'acronyme de Carriage Return . Les caractères d'échappement sont écrits entre parenthèses. Ainsi, sur chaque OS, la nouvelle ligne représente quelque chose de spécifique au système. %nest indépendant du système d'exploitation, il est portable. Cela signifie \nsur les systèmes Unix ou \r\nsur les systèmes Windows et ainsi de suite. Ainsi, n'utilisez pas, utilisez \nplutôt %n.


1
voir la section Séparateur de ligne dans la documentation
Lu55

29

Cela peut être fait de plusieurs manières. Je mentionne 2 façons simples.

  1. Manière très simple comme ci-dessous:

    System.out.println("I\nam\na\nboy");
  2. Cela peut également être fait avec la concaténation comme ci-dessous:

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


13

Pour rendre le code portable sur n'importe quel système, j'utiliserais:

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

Ceci est important car différents OS utilisent des notations différentes pour la nouvelle ligne: Windows utilise "\ r \ n", Classic Mac utilise "\ r", et Mac et Linux utilisent tous les deux "\ n".

Commentateurs - veuillez me corriger si je me trompe sur ce point ...


7

\n est utilisé pour créer une ligne séparée;

Exemple:

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

Résultat:

I
am
boy

4
Veuillez d'abord lire les autres réponses. Votre solution est déjà là.
Honza Zidek

6

Si vous souhaitez simplement imprimer une nouvelle ligne dans la console, vous pouvez utiliser «\ n» pour les nouvelles lignes.

Si vous souhaitez casser du texte dans les composants swing, vous pouvez utiliser html:

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

Cela fonctionne pour moi. Et j'utilise une police unicode. Cela fonctionne mieux.
Sahan le

5

Si vous voulez que votre code ne soit pas spécifique, vous devez utiliser println pour chaque mot

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

car Windows utilise "\ r \ n" comme nouvelle ligne et les systèmes unixoïdes utilisent simplement "\ n"

println utilise toujours le bon


3
Ce n'est pas une bonne solution pour écrire trop de System.out.println ()
Ripon Al Wasim

@op N'oubliez pas que println()ajoute un caractère de nouvelle ligne à la fin de la chaîne (pas au début).
Wolfpack'08

@Hachi, System.lineSeparator()ou System.getProperty("line.separator")peut être utilisé pour rendre le système de code indépendant.
Ashish Kumar

3

Qu'en est-il d' %nutiliser un formateur comme String.format()?:

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

Comme le dit cette réponse , il est disponible à partir de java 1.5 et est un autre moyen de System.getProperty("line.separator")ou System.lineSeparator()et, comme celui-ci, est indépendant du système d'exploitation .


2

Sauts de ligne indépendants de la plate-forme

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

Production: bandham manikanta

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


1

Exemple de programme complet, avec une touche amusante:

Ouvrez un nouveau document vierge et enregistrez-le sous %yourJavaDirectory%/iAmABoy/iAmABoy.java. "iAmABoy" est le nom de la classe.

Collez le code suivant et lisez-le. N'oubliez pas que je suis un débutant, donc j'apprécie tous les commentaires!

//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!");
    } 

}

Maintenant, dans terminal / cmd, recherchez %yourJavaDirectory%/iAmABoyet tapez:

javac iAmABoy.java
java iAmABoy I am a boy

Vous pouvez remplacer les arguments I am a boypar n'importe quoi!


Vous n'avez pas besoin de deux boucles. Soit passer argsdirectement à nlSeparated()ou faire nlSeparated()prendre un scalaire Stringau lieu d'un tableau. La première option est probablement meilleure. Imprimez également votre signature avec printlnau lieu de print.
Mad Physicist

Dans main, remplacez for (String arg : args) { nlSeparated(arg); }par juste nlSeparated(args);. nlSeparatedaccepte déjà une liste de Strings. Pour une meilleure explication, voir ici: stackoverflow.com/a/12534579/2988730
Mad Physicist

1

Optez pour une scission.

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

0

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

Cela fonctionne Il donnera également un caractère d'espace avant d'entrer le caractère


0

J'utilise ce code 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);
    }
}

avec le terminal, je peux utiliser arg I\\nam\\na\\boypour System.out.printlnimprimer

I
am
a
boy

entrez la description de l'image ici


-1

vous pouvez utiliser la <br>balise dans votre chaîne pour afficher dans les pages html


2
C'est toujours une mauvaise idée d'incorporer du balisage dans votre sortie. Vous ne savez jamais quelle technologie d'affichage vos utilisateurs utilisent. Il est préférable de le garder aussi générique que possible et d'utiliser un filtre de formatage pour l'affichage si nécessaire.
TMN

J'ai dit que cela fonctionne juste dans la page html, c'est juste une suggestion pour ceux qui veulent afficher un texte simple dans les pages Web.
Mehdi Roostaeian
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.