我有一个StringBuilder
对象
StringBuilder result = new StringBuilder();
result.append(someChar);
现在,我想在末尾添加一个换行符StringBuilder
。我该怎么做?
result.append("/n");
不起作用。因此,我正在考虑使用Unicode编写换行符。请问有帮助吗?如果是这样,我如何添加一个?
我有一个StringBuilder
对象
StringBuilder result = new StringBuilder();
result.append(someChar);
现在,我想在末尾添加一个换行符StringBuilder
。我该怎么做?
result.append("/n");
不起作用。因此,我正在考虑使用Unicode编写换行符。请问有帮助吗?如果是这样,我如何添加一个?
Answers:
它应该是
r.append("\n");
但我建议您按照以下步骤做,
r.append(System.getProperty("line.separator"));
System.getProperty("line.separator")
在Java中为您提供依赖于系统的换行符。同样从Java 7开始,有一个方法可以直接返回值:System.lineSeparator()
StringBuilder#appendLine()
方法。
System.lineSeparator()
文档中提到“返回系统相关的行分隔符字符串”。这不是平台无关的。如果您需要编写将由基础操作系统使用的字符串,请使用此代码,否则请使用'\n'
。
System.lineSeparator()
在处理不可移植的资源(即特定于底层操作系统的资源)时应使用。如果您在Windows(\ r \ n)或Unix(\ n)上运行Java,则它具有不同的值。如果您一直使用System.lineSeparator()
,则将产生不可移植的文件。
appendLine
过载StringBuilder
。
另一个选择是使用Apache Commons StrBuilder,它具有StringBuilder所缺少的功能。
从3.6版开始,不建议使用StrBuilder,而推荐使用具有相同功能的TextStringBuilder
deprecated
。请使用org.apache.commons.text.TextStringBuilder
。
您可以line.seperator
在其中添加新行
我创建类似于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
对于科特林,
StringBuilder().appendln("your text");
尽管这是一个Java问题,但这也是kotlin的第一个Google搜索结果,可能会派上用场。
除了KS对创建StringBuilderPlus类并利用ther适配器模式扩展最终类的响应之外,如果您使用泛型并在新的append和appendLine方法中返回StringBuilderPlus对象,则可以利用StringBuilders的许多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();
对于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;
}
"\n"
,或System.getProperty("line.separator")
。