J'ai des ficelles comme
"I am a boy".
Je veux imprimer comme ça
"I
am
a
boy".
Quelqu'un peut-il m'aider?
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
Vous pouvez également utiliser System.lineSeparator()
:
String x = "Hello," + System.lineSeparator() + "there";
System.out.printf("I %n am %n a %n boy");
I
am
a
boy
Il est préférable d'utiliser %n
en tant que caractère de nouvelle ligne indépendant du système d'exploitation au lieu de \n
, ce qui est plus simple que d'utiliser System.lineSeparator()
.
Pourquoi utiliser %n
, car sur chaque système d’exploitation, la nouvelle ligne fait référence à un ensemble de caractères différent;
Unix and modern Mac's : LF (\n)
Windows : CR LF (\r\n)
Older Macintosh Systems : CR (\r)
LF est l'acronyme de saut de ligne et CR est l'acronyme de retour chariot. Les caractères d'échappement sont écrits entre parenthèses. Ainsi, sur chaque système d'exploitation, nouvelle ligne représente quelque chose de spécifique au système. %n
est agnostique, il est portable. Cela signifie \n
sur les systèmes Unix ou \r\n
sur les systèmes Windows, etc. Ainsi, n'utilisez pas \n
, utilisez plutôt %n
.
Cela peut être fait de plusieurs manières. Je mentionne 2 façons simples.
Manière très simple comme ci-dessous:
System.out.println("I\nam\na\nboy");
Cela peut également être fait avec la concaténation comme ci-dessous:
System.out.println("I" + '\n' + "am" + '\n' + "a" + '\n' + "boy");
Essayer:
System.out.println("I\nam\na\nboy");
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 systèmes d’exploitation utilisent des notations différentes pour newline: Windows utilise "\ r\n", Classic Mac utilise "\ r", et Mac et Linux utilisent tous deux "\ n".
Commentaires, corrigez-moi si je me trompe ...
\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
Si vous souhaitez simplement imprimer une nouvelle ligne dans la console, vous pouvez utiliser "\ n" pour les nouvelles lignes.
Si vous souhaitez insérer du texte dans des composants Swing, vous pouvez utiliser HTML:
String s = "<html>first line<br />second line</html>";
Si vous voulez que votre code soit non 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");
parce que Windows utilise "\ r\n" comme nouvelle ligne et que les systèmes unixoides utilisent uniquement "\ n"
println utilise toujours le bon
Qu'en est-il de %n
en utilisant un formateur comme String.format()
?:
String s = String.format("I%nam%na%nboy");
Comme cette réponse , il est disponible à partir de Java 1.5 et constitue un autre moyen de System.getProperty("line.separator")
ou System.lineSeparator()
et, comme pour ces deux cas, est indépendant du système d'exploitation .
Exemple de programme complet, avec une touche amusante:
Ouvrez un nouveau document vierge et enregistrez-le sous le nom %yourJavaDirectory%/iAmABoy/iAmABoy.Java
. "iAmABoy" est le nom de la classe.
Collez le code suivant et lisez-le. N'oubliez pas que je suis débutant, j'apprécie donc 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, accédez à %yourJavaDirectory%/iAmABoy
et tapez:
javac iAmABoy.Java
java iAmABoy I am a boy
Vous pouvez remplacer les arguments I am a boy
par n'importe quoi!
optez pour une scission.
String string = "I am a boy";
for (String part : string.split(" ")) {
System.out.println(part);
}
System.out.println ("I\nam\na\nboy");
Cela fonctionne Il donnera un caractère d'espace également avant d'entrer le caractère
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 terminal, je peux utiliser arg I\\nam\\na\\boy
pour faire System.out.println
imprimer
I
am
a
boy