私はStringBuilder
オブジェクトを持っています、
StringBuilder result = new StringBuilder();
result.append(someChar);
次に、改行文字をに追加しますStringBuilder
。どうすればできますか?
result.append("/n");
動作しません。それで、ユニコードを使って改行を書くことを考えていました。これは役に立ちますか?もしそうなら、どうすれば追加できますか?
私はStringBuilder
オブジェクトを持っています、
StringBuilder result = new StringBuilder();
result.append(someChar);
次に、改行文字をに追加しますStringBuilder
。どうすればできますか?
result.append("/n");
動作しません。それで、ユニコードを使って改行を書くことを考えていました。これは役に立ちますか?もしそうなら、どうすれば追加できますか?
回答:
そのはず
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
。
別のオプションは、StringBuilderにはない機能を備えたApache Commons StrBuilderを使用することです。
バージョン3.6のとおりStrBuilderはの賛成で廃止されましたTextStringBuilder同じ機能を持っています
deprecated
。使用してくださいorg.apache.commons.text.TextStringBuilder
。
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
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().appendln("your text");
これはJavaの質問ですが、これはkotlinの最初のgoogle結果でもあり、役に立つかもしれません。
StringBuilderPlusクラスを作成し、アダプターパターンを利用して最終クラスを拡張するというKSの応答に加えて、ジェネリックを使用して新しい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();
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")
。