Java String nouvelle ligne

134

J'ai une ficelle comme

"I am a boy".

Je veux imprimer comme ça

"I 
am 
a
boy".

Quelqu'un peut-il m'aider?

Md. Rashedul Hasan
la source

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
Prince John Wesley
la source
@the_prole expliqué ici
Prince John Wesley
La troisième option est la meilleure pour la portabilité.
Amos Bordowitz
117

Vous pouvez également utiliser System.lineSeparator():

String x = "Hello," + System.lineSeparator() + "there";
Emalton
la source
8
Dans les versions Java anciennes: System.getProperty("line.separator").
ROMANIA_engineer
1
Raccourci: String x = "Hello, %n there";. Ajout d'espaces %njuste pour des raisons de lisibilité.
Manoj Shrestha
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.

Levent Divilioglu
la source
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");
Ripon Al Wasim
la source
15

Essayer:

System.out.println("I\nam\na\nboy");
Andrea Girardi
la source
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 ...

Amos Bordowitz
la source
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
Surendar D
la source
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>";
Stéphan
la source
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

Hachi
la source
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 .

Alex Sifuentes
la source
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()

Bandham Manikanta
la source
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!

Wolfpack'08
la source
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);
}
mrVoid
la source
0

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

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

Tanushree
la source
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

Tung Duong
la source
-1

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

Mehdi Roostaeian
la source
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