575 votes

Comment obtenir un nouveau caractère de ligne dépendant de la plate-forme ?

Comment obtenir un saut de ligne dépendant de la plate-forme en Java ? Je ne peux pas utiliser "\n" partout.

0 votes

Veuillez envisager de modifier les réponses acceptées. La deuxième réponse est plus appropriée.

744voto

StriplingWarrior Points 56276

Java 7 dispose désormais d'un System.lineSeparator() méthode.

8 votes

Il aurait été très gentil de leur part de fournir une méthode surchargée. lineSeperator(int) qui renvoie un certain nombre de séparateurs de ligne, car je me retrouve souvent à en utiliser deux à la fois.

11 votes

@Kon Basé sur cette réponse : String.join("", Collections.nCopies(5, System.lineSeparator()))

9 votes

Avec Java 11 : System.lineSeparator().repeat(5)

654voto

abahgat Points 6479

Vous pouvez utiliser

System.getProperty("line.separator");

pour obtenir le séparateur de ligne

5 votes

Attention à ajouter Java 7 System.lineSeparator() détails donc voici une réponse définitive à cette question ?

374voto

Alex B Points 12826

En plus de la propriété line.separator, si vous utilisez java 1.5 ou une version ultérieure et la propriété String.format (ou autre mise en forme ), vous pouvez utiliser %n dans le cas de

Calendar c = ...;
String s = String.format("Duke's Birthday: %1$tm %1$te,%1$tY%n", c); 
//Note `%n` at end of line                                  ^^

String s2 = String.format("Use %%n as a platform independent newline.%n"); 
//         %% becomes %        ^^
//                                        and `%n` becomes newline   ^^

Voir le API Java 1.8 pour le formateur pour plus de détails.

8 votes

Merci. Je suis sûr que System.getProperty("line.separator") ; a son utilité, mais je suis fatigué de voir : "Ligne 1" + System.getProperty("line.separator") + "Ligne 2".

45 votes

Oh là là, "Ligne 1" + System.getProperty("line.separator") + "Ligne 2" est en effet l'une des choses les plus laides que j'ai jamais vues. Déclarer simplement une constante ailleurs serait moins pénible.

4 votes

Cela ne fonctionne pas, du moins, avec une chaîne de caractères entrant dans une déclaration log4j. La création d'un exemple avec une nouvelle ligne à la fin cache potentiellement le problème. En outre, la chaîne s2 est simplement confuse en utilisant '%%n'.

43voto

Michael Myers Points 82361

Si vous essayez d'écrire un saut de ligne dans un fichier, vous pouvez simplement utiliser la fonction [newLine()](http://java.sun.com/javase/6/docs/api/java/io/BufferedWriter.html#newLine()) méthode.

31voto

ceving Points 3990

C'est également possible : String.format("%n") .

Ou String.format("%n").intern() pour économiser quelques octets.

7 votes

C'est la même chose que la réponse d'Alex B.

16 votes

Oh, maintenant je le vois. Il a écrit tellement de choses non demandées autour de sa réponse. ;-)

0 votes

J'ai essayé de faire cela mais lorsque j'ai visualisé le fichier dans le bloc-notes, il n'a pas reconnu la nouvelle ligne.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X