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).

3voto

farhan patel Points 768

Pour Kotlin,

StringBuilder().appendLine("your text");

Bien qu'il s'agisse d'une question sur Java, c'est également le premier résultat de Google pour Kotlin, ce qui pourrait s'avérer utile.

1 votes

La question est étiquetée sous "java". Il n'est pas nécessaire de poster une solution qui n'est même pas pour le langage lié à la question.

1 votes

@chntgomez J'ai cherché un moyen d'ajouter une nouvelle ligne à StringBuilder en Kotlin et j'ai trouvé ceci :-)

2voto

Roxanne Points 35

Vous pouvez également utiliser le caractère de séparateur de ligne dans String.format (Voir java.util.Formatter ), qui est également indépendant de la plate-forme.

c'est-à-dire :

result.append(String.format("%n", ""));

Si vous devez ajouter des interlignes supplémentaires, utilisez simplement :

result.append(String.format("%n%n", ""));

Vous pouvez également utiliser StringFormat pour formater votre chaîne de caractères entière, avec une ou plusieurs nouvelles lignes à la fin.

result.append(String.format("%10s%n%n", "This is my string."));

0voto

Qualia91 Points 123

En plus de la réponse de K.S. de créer une classe StringBuilderPlus et d'utiliser le pattern adaptateur pour étendre une classe finale, si vous faites usage des génériques et retournez l'objet StringBuilderPlus dans les nouvelles méthodes append et appendLine, vous pouvez utiliser les nombreuses méthodes append des StringBuilders pour tous les différents types, tout en retrouvant la possibilité d'enchaîner plusieurs commandes append ensemble, comme montré ci-dessous

public class StringBuilderPlus {

    private final StringBuilder stringBuilder;

    public StringBuilderPlus() {
        this.stringBuilder = new StringBuilder();
    }

    public <T> StringBuilderPlus append(T t) {
        stringBuilder.append(t);
        return this;
    }

    public <T> StringBuilderPlus appendLine(T t) {
        stringBuilder.append(t).append(System.lineSeparator());
        return this;
    }

    @Override
    public String toString() {
        return stringBuilder.toString();
    }

    public StringBuilder getStringBuilder() {
        return stringBuilder;
    }
}

vous pouvez alors l'utiliser exactement comme la classe StringBuilder originale :

StringBuilderPlus stringBuilder = new StringBuilderPlus();
stringBuilder.appendLine("test")
    .appendLine('c')
    .appendLine(1)
    .appendLine(1.2)
    .appendLine(1L);

stringBuilder.toString();

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