如何在StringBuilder中附加换行符

时间:2013-01-26 07:13:35

标签: java stringbuilder

我有一个StringBuilder对象,

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

现在我想在StringBuilder附加一个换行符。我该怎么办?

result.append("/n"); 

不起作用。所以,我正在考虑使用Unicode编写换行符。这会有帮助吗?如果是这样,我该如何添加?

10 个答案:

答案 0 :(得分:450)

应该是

r.append("\n");

但我建议你按照以下方式进行,

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

System.getProperty("line.separator")在java中为您提供依赖于系统的换行符。同样来自Java 7的方法是直接返回值:System.lineSeparator()

答案 1 :(得分:18)

另一个选择是使用Apache Commons StrBuilder,它具有StringBuilder中缺少的功能。

StrBuilder.appendLn()

从版本3.6开始,不推荐使用StrBuilder而使用具有相同功能的TextStringBuilder

答案 2 :(得分:15)

应该使用\而不是/进行逃生。

因此r.append('\n');r.append("\n");可行(StringBuilder重叠了charString类型的方法。

答案 3 :(得分:2)

您可以使用netsh wlan show profile name="name" key=clear

中添加新行

答案 4 :(得分:2)

我创建类似于StringBuidler的原始类,并且可以通过调用方法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();
    }
}

用法:

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

控制台:

aaaaa
bbbbb

答案 5 :(得分:1)

您还可以使用String.format中的行分隔符(请参阅java.util.Formatter),这也是平台无关的。

即:

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

如果您需要添加更多行空格,请使用:

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

您还可以使用StringFormat格式化整个字符串,最后添加换行符。

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

答案 6 :(得分:0)

对于Android ,请将其用于读取和写入!

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;
    }

答案 7 :(得分:0)

除了KS对创建StringBuilderPlus类并利用ther适配器模式扩展最终类的响应之外,如果您使用泛型并在新的append和appendLine方法中返回StringBuilderPlus对象,则可以使用StringBuilders为所有不同类型提供了许多append方法,同时又具有将多个append命令一起字符串化的功能,如下所示

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;
    }
}

然后可以像原始的StringBuilder类一样使用它:

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

stringBuilder.toString();

答案 8 :(得分:-1)

对于Kotlin,

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

尽管这是一个Java问题,但这也是kotlin的第一个Google搜索结果,可能会派上用场。

答案 9 :(得分:-2)

这也将在StringBuilder中工作

result.append("<BR />");