如何将换行符附加到StringBuilder

我有一个StringBuilder对象,

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

现在我想给StringBuilder添加一个换行符。我该怎么做呢?

result.append("/n");

不管用。我在考虑用Unicode写一个换行符。这有用吗?如果有,我怎么添加一个?

491279 次浏览

转义应该用\完成,而不是/

所以r.append('\n');r.append("\n");可以工作(StringBuildercharString类型重载了方法)。

应该是这样

r.append("\n");

但我建议你这样做,

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

System.getProperty("line.separator")提供java中依赖于系统的换行符。Java 7中还有一个直接返回值的方法:System.lineSeparator()

另一种选择是使用Apache Commons StrBuilder,它具有StringBuilder所缺乏的功能。

StrBuilder.appendLn() . appln (

从3.6版开始,StrBuilder已经被弃用,取而代之的是具有相同功能的TextStringBuilder

你可以使用line.seperator来添加新行

你也可以在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."));

我创建了类似于stringbuilder的原始类,可以通过调用方法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

除了K.S的响应创建一个StringBuilderPlus类和利用适配器模式来扩展一个final类,如果你使用泛型并在新的append和appendLine方法中返回StringBuilderPlus对象,你可以为所有不同的类型使用StringBuilders的许多附加方法,同时重新获得将多个附加命令串在一起的能力,如下所示

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();