web-dev-qa-db-fra.com

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 au StringBuilder. Comment puis-je le faire?

result.append("/n"); 

Ne marche pas. Je pensais donc à écrire une nouvelle ligne en utilisant Unicode. Cela aidera-t-il? Si oui, comment puis-je en ajouter un?

215
Illep

CA devrait etre

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 dépendante du système en Java. Également à partir de Java 7, il existe une méthode qui renvoie directement la valeur: System.lineSeparator()

466
Jayamohan

Une autre option consiste à utiliser Apache Commons StrBuilder, qui présente les fonctionnalités qui manquent dans StringBuilder.

StrBuilder.appendLn ()

À partir de la version 3.6, StrBuilder est déconseillé en faveur de TextStringBuilder , qui a les mêmes fonctionnalités.

18
Half_Duplex

La sortie doit être effectuée avec \, pas /.

Donc, r.append('\n'); ou r.append("\n"); fonctionnera (StringBuilder a surchargé les méthodes pour le type char et String.).

16
nhahtdh

vous pouvez utiliser line.seperator pour ajouter une nouvelle ligne

2
Rashida Hasan

Je crée une classe originale similaire à StringBuidler et je peux 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();
    }
}

Usage:

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

Console:

aaaaa
bbbbb
2
K.S

Vous pouvez également utiliser le caractère 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 avez besoin d'ajouter plus d'espaces, utilisez simplement:

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

Vous pouvez également utiliser StringFormat pour formater votre chaîne entière, avec une nouvelle ligne à la fin.

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

Pour Android , utilisez-le pour lire et écrire!

private void writeToFile(String message) {
        try {
            OutputStream outputStream = openFileOutput("todoList.txt",Context.MODE_PRIVATE);
            OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream);
            outputStreamWriter.write(message);
            outputStreamWriter.close();

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private String readFromFile() throws IOException {

        String result = "";
        InputStream inputStream = openFileInput("todoList.txt");

        if (inputStream != null) {
            InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
            String tempString = "";
            StringBuilder stringBuilder = new StringBuilder();

            while ( (tempString = bufferedReader.readLine()) != null ) {

                stringBuilder.append(tempString);
                stringBuilder.append("\n");
            }
            inputStream.close();
            result = stringBuilder.toString();
        }
        return result;
    }
0

Pour Kotlin,

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

Bien qu'il s'agisse d'une question Java, il s'agit également du premier résultat de Google pour kotlin, qui pourrait s'avérer utile.

0
farhan patel