StringBuilder में न्यूलाइन चरित्र


88

आप एक नई पंक्ति (\ n \ r) के चरित्र को StringBuilderकैसे जोड़ेंगे ?


17
यह किसी भी सामान्य ओएस के तहत एक नई रेखा नहीं है। विंडोज \ r \ n है, मैक \ r है, यूनिक्स और लिनक्स \ n हैं।
बेन वोइग्ट

2
पेडेंटली 'न्यूलाइन' हमेशा 'एन' होता है। यह मैकेनिकल टेलेटिप्स में प्लेटन शिफ्ट कैरेक्टर था। 'कैरिज रिटर्न' हमेशा 'आर' होता है। यह टेलेटिप्स में कैरिज रिटर्न कैरेक्टर था। प्रत्येक ऑपरेटिंग सिस्टम उन्हें अलग तरीके से व्याख्या कर सकता है। यूनिक्स / लिनक्स में आमतौर पर रिटर्न का उपयोग नहीं किया जाता है क्योंकि यह अनावश्यक है क्योंकि यह अब एक यांत्रिक प्रणाली नहीं है।
Jay

6
@ जाय: केवल प्लेटिन शिफ्ट के कारण एक चरित्र को न्यूलाइन के रूप में संदर्भित नहीं किया जाता है, लेकिन लाइनफीड।
बेन वोइगट जूल

जवाबों:


125

मैं पर्यावरण का उपयोग करता हूँ । नई संपत्ति

कुछ इस तरह:

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

यदि आप प्रत्येक परिशिष्ट के बाद एक नई पंक्ति रखना चाहते हैं, तो आप बेन वोइगट के उत्तर पर एक नज़र डाल सकते हैं ।


2
नई पंक्तियों को पाने के लिए एपेंड और एपेंडलाइन को मिलाना संभव है, जहां आप उन्हें चाहते हैं, हर ऐपेंड के बाद नहीं। इसके अलावा, मैं एपेंडलाइन के शून्य-तर्क संस्करण से जुड़ा हुआ हूं, जो कि न्यूलाइन अनुक्रम के अलावा कुछ भी नहीं जोड़ता है।
बेन वोइग्ट

4
Stringbuilder.AppendLine () sb.Append (Environment.NewLine) के समान काम करता है; यह भी कहा जाता है कि मैं ( msdn.microsoft.com/en-us/library/ebk18257.aspx )
मुल्की

3
ज्ञात रहे कि Unix सिस्टम पर पर्यावरण.न्यूलाइन "\ r \ n" नहीं है, इसलिए यदि आप "\ r \ n" के रूप में निर्दिष्ट कुछ को लागू कर रहे हैं, तो आपको इसे परिशिष्ट को कॉल करने के बजाय कोड में लिखना होगा।
hultqvist

1
@hultqvist: AppendLineएक स्ट्रीमराइटर पर उपयोग करने के लिए बेहतर है , तो यह उस विशेष के लिए उपयुक्त नया अनुक्रम सम्मिलित करेगा StreamWriterऔर केवल नहीं Environment.NewLine। उदाहरण के लिए, यदि आप SMTP कनेक्शन से जुड़ी एक स्ट्रीम खोलते हैं, तो आप इसकी NewLineसंपत्ति "\ r \ n" पर सेट कर सकते हैं और फिर आपको यूनिक्स पर भी वैध SMTP हैंडशेक मिल जाएगा।
बेन वोइगट

1
इस विधि की तुलना में अपेंडलाइन सरल है।
एंटोनियो मानो




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

इस तरह आपको पर्यावरण के साथ स्क्रीन को अव्यवस्थित करने की आवश्यकता नहीं है। कई बार दोहराया गया परिशिष्ट या परिशिष्ट ()। उन्हें टाइप करने के लिए याद रखने की तुलना में यह कम त्रुटि वाला होगा।


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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.