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.