StringBuilderの改行文字


88

どのように改行(\ n \ r)文字を追加しますStringBuilderか?


16
一般的なOSでは、これは改行ではありません。Windowsは\ r \ n、Macは\ r、UnixとLinuxは\ nです。
Ben Voigt

2
厳密には、「改行」は常に「\ n」です。それは、機械式テレタイプにおける無秩序なシフト特性でした。「復帰」は常に「\ r」です。それはテレタイプの改行文字でした。各オペレーティングシステムでは、それらの解釈が異なる場合があります。Unix / Linuxでは、リターンはもはや機械的なシステムではないため不要なので、通常は使用されません。
ジェイ・

6
@ジェイ:プラテンシフトのみを引き起こす文字は改行ではなく、改行と呼ばれます。
Ben Voigt 2013

回答:


125

Environment.NewLineプロパティを使用します

何かのようなもの:

StringBuilder sb = new StringBuilder();
sb.AppendFormat("Foo{0}Bar", Environment.NewLine);
string s = sb.ToString();

または

StringBuilder sb = new StringBuilder();
sb.Append("Foo");
sb.Append("Foo2");
sb.Append(Environment.NewLine);
sb.Append("Bar");
string s = sb.ToString();

各追加の後に新しい行が必要な場合は、Ben Voigtの回答をご覧ください。


2
AppendとAppendLineを混在させて、Appendごとにではなく、必要な場所に新しい行を取得することができます。また、改行シーケンスのみを追加するゼロ引数バージョンのAppendLineにリンクしました。
Ben Voigt 2010

4
Stringbuilder.AppendLine()はsb.Append(Environment.NewLine);と同じことを行います。それは私が(言うすっきりもあるmsdn.microsoft.com/en-us/library/ebk18257.aspx
Mulki

3
UNIXシステムのEnvironment.NewLineは「\ r \ n」ではないことに注意してください。「\ r \ n」として指定されたものを実装する場合は、AppendLineを呼び出すのではなく、コードで記述する必要があります。
hultqvist 2012

1
@hultqvist:AppendLineStreamWriterで使用する方が良いです。StreamWriterそれだけではなく、その特定に適切な改行シーケンスが挿入されますEnvironment.NewLine。たとえば、SMTP接続に関連付けられたストリームを開く場合、そのNewLineプロパティを "\ r \ n"に設定すると、UNIXでも有効なSMTPハンドシェイクを取得できます。
Ben Voigt 2017年

1
AppendLineは、このメソッドよりも単純です。
Antonio Mano




4

StringBuilderの追加行組み込み関数を使用します。

StringBuilder sb = new StringBuilder();
sb.AppendLine("First line");
sb.AppendLine("Second line");
sb.AppendLine("Third line");

出力

First line
Second line
Third line


1

複数行の場合、私が見つける最善の方法はこれを行うことです:

        IEnumerable<string> lines = new List<string>
        {
            string.Format("{{ line with formatting... {0} }}", id),
            "line 2",
            "line 3"
        };
        StringBuilder sb = new StringBuilder();
        foreach(var line in lines)
            sb.AppendLine(line);

この方法では、Environment.NewLineまたはAppendLine()を複数回繰り返して画面を乱雑にする必要はありません。また、入力を忘れずに入力するよりも、エラーが発生しにくくなります。


1

StringBuilderクラスの拡張を作成するだけです。

Public Module Extensions
    <Extension()>
    Public Sub AppendFormatWithNewLine(ByRef sb As System.Text.StringBuilder, ByVal format As String, ParamArray values() As Object)
        sb.AppendLine(String.Format(format, values))
    End Sub
End Module
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.