StringBuilder'da yeni satır karakteri


89

İçine yeni bir satır (\ n \ r) karakterini nasıl eklersiniz StringBuilder?


17
Bu, herhangi bir ortak işletim sisteminde yeni bir satır değil. Windows \ r \ n, Mac \ r, Unix ve Linux \ n.
— Ben Voigt

2
Uysalca 'yeni satır' her zaman '\ n' dir. Mekanik teletiplerdeki platten kayma karakteriydi. "satır başı" her zaman "\ r" dir. Teletiplerdeki satırbaşı karakteriydi. Her işletim sistemi bunları farklı yorumlayabilir. Unix / Linux'ta geri dönüş genellikle kullanılmaz çünkü gereksizdir çünkü artık mekanik bir sistem değildir.
— Jay

6
@Jay: Yalnızca merdane kaymasına neden olan bir karakter, satırsonu olarak değil, satır besleme olarak adlandırılır.
— Ben Voigt

Yanıtlar:


126

Ben faydalanmak istiyorum Environment.NewLine özelliği .

Gibi bir şey:

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

Veya

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

Her eklemeden sonra yeni bir satırın olmasını isterseniz, Ben Voigt'in cevabına bir göz atabilirsiniz .


2
Her Append'den sonra değil, istediğiniz yerde yeni satırlar elde etmek için Append ve AppendLine'ı karıştırmak mümkündür. Ayrıca, satırsonu dizisinden başka hiçbir şey eklemeyen AppendLine'ın sıfır bağımsız değişken sürümüne bağlandım.
— Ben Voigt

4
Stringbuilder.AppendLine (), sb.Append (Environment.NewLine) ile aynı şeyi yapar; Ayrıca söyleyebilirim ki ( msdn.microsoft.com/en-us/library/ebk18257.aspx )
— Mulki

3
Unix sistemlerinde Environment.NewLine'ın "\ r \ n" olmadığına dikkat edin, bu nedenle "\ r \ n" olarak belirtilen bir şeyi uyguluyorsanız, AppendLine'ı çağırmak yerine koda yazmalısınız.
— hultqvist

1
@hultqvist: Daha iyi kullanmak AppendLineo zaman o belirli için yeni satır dizisi uygun düzgün ekler, bir StreamWriter üzerinde StreamWriterdeğil, sadece ve Environment.NewLine. Örneğin, bir SMTP bağlantısına bağlı bir akışı açarsanız, NewLineözelliğini "\ r \ n" olarak ayarlayabilir ve ardından Unix'te bile geçerli SMTP el sıkışması elde edersiniz.
— Ben Voigt

1
AppendLine, bu yöntemden daha basittir.
— Antonio Mano




5

StringBuilder'ın eklenti satırı yerleşik işlevlerini kullanın:

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

Çıktı

First line
Second line
Third line

2
StringBuilder sb = new StringBuilder();

Sen kullanabilirsiniz sb.AppendLine () veya sb.Append (Environment.NewLine) ;


1

Birden çok hat için bulduğum en iyi yol şunu yapmaktır:

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

Bu şekilde, ekranı birden çok kez tekrarlanan Environment.NewLine veya AppendLine () ile karıştırmanız gerekmez. Ayrıca, yazmayı hatırlamaktan daha az hataya yatkın olacaktır.


1

StringBuilder sınıfı için bir uzantı oluşturun:

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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.