257 votes

Comment ajouter une nouvelle ligne à StringBuilder ?

J'ai un StringBuilder objet,

StringBuilder result = new StringBuilder();
result.append(someChar);

Maintenant, je veux ajouter un caractère de nouvelle ligne à l'adresse suivante StringBuilder . Comment puis-je le faire ?

result.append("/n"); 

Ne fonctionne pas. J'ai donc pensé à écrire une nouvelle ligne en utilisant l'Unicode. Cela peut-il aider ? Si oui, comment puis-je en ajouter un ?

24 votes

Je pensais que c'était "\n" ou System.getProperty("line.separator") .

0 votes

A nouvelle ligne n'est pas nécessairement un caractère LINE FEED (LF) (Ascii/Unicode 10). Comme le réponse correcte souligne qu'en Java, vous pouvez obtenir l'un ou l'autre (LINE FEED ou une nouvelle ligne spécifique à la plate-forme).

553voto

Jayamohan Points 5901

Il devrait être

r.append(" \n ") ;

Mais je vous recommande de faire comme ci-dessous,

r.append(System.getProperty("line.separator"));

System.getProperty("line.separator") vous donne une nouvelle ligne indépendante de la plate-forme en Java. Depuis Java 7, il existe également une méthode qui renvoie directement la valeur : System.lineSeparator()

96 votes

+1 pour le raccourci System.lineSeparator. La question la plus importante est de savoir pourquoi il n'y a pas de StringBuilder#appendLine() méthode.

16 votes

System.lineSeparator() La documentation mentionne "Retourne la chaîne de séparation de ligne dépendante du système". Ce n'est pas indépendant de la plate-forme. Utilisez ce code si vous avez besoin d'écrire une chaîne qui sera utilisée par le système d'exploitation sous-jacent, sinon utilisez '\n' .

2 votes

@tuscland - Pourquoi ne pas utiliser System.lineSeparator() tout le temps ? Pourquoi est-ce que ' \n ' une meilleure option par défaut ?

23voto

Half_Duplex Points 158

Une autre option consiste à utiliser Apache Commons StrBuilder, qui possède la fonctionnalité qui manque à StringBuilder.

StrBuilder.appendLn()

À partir de la version 3.6, StrBuilder a été déprécié au profit de TextStringBuilder qui a la même fonctionnalité

5 votes

... et depuis Java 8 il y a StringJoiner qui " est utilisé pour construire une séquence de caractères séparés par un délimiteur et commençant éventuellement par un préfixe fourni et se terminant par un suffixe fourni. " Utilisation " \n "comme délimiteur donnerait lieu à de nouvelles lignes (à l'exception de la dernière). En interne, il utilise un StringBuilder. La même approche pourrait être réalisée en utilisant le Google Guava Joiner, je suppose.

1 votes

... et maintenant ceci est deprecated . Veuillez utiliser org.apache.commons.text.TextStringBuilder .

0 votes

TextStringBuilder n'est pas dans commons-lang3 il est dans commons-text commons.apache.org/proper/commons-text

18voto

nhahtdh Points 28167

L'évasion doit se faire avec \ pas / .

Alors r.append('\n'); ou r.append("\n"); fonctionnera ( StringBuilder a des méthodes surchargées pour char et String type).

4voto

K.S Points 77

Je crée une classe originale qui est similaire à StringBuidler et qui peut ajouter une ligne en appelant la méthode appendLine(String str).

public class StringBuilderPlus {

    private StringBuilder sb;

    public StringBuilderPlus(){
         sb = new StringBuilder();
    }

    public void append(String str)
    {
        sb.append(str != null ? str : "");
    }

    public void appendLine(String str)
    {
        sb.append(str != null ? str : "").append(System.getProperty("line.separator"));
    }

    public String toString()
    {
        return sb.toString();
    }
}

Utilisation :

StringBuilderPlus sb = new StringBuilderPlus();
sb.appendLine("aaaaa");
sb.appendLine("bbbbb");
System.out.println(sb.toString());

Console :

aaaaa
bbbbb

3voto

Rashida Hasan Points 89

Vous pouvez utiliser line.seperator pour ajouter une nouvelle ligne dans

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