2010-04-13 11 views
7

में नई लाइन मेरी कक्षाओं में से एक में टॉस्ट्रिंग को ओवरराइड करने का प्रयास कर रही है।मल्टी-लाइन स्ट्रिंग

return string.Format(@" name = {0} 
         ID = {1} 
         sec nr = {2} 
         acc nr = {3}", string, int, int ,int); // types 

लेकिन बात यह है, परिणाम गठबंधन है नहीं जब बाहर मुद्रित:

name = test 
            ID = 42 
            sec nr = 11 
            acc nr = 55 

जोड़ने \ की कोशिश n सिर्फ formating के बिना इसे बाहर प्रिंट करता है। अनुमान लगाया गया है कि इसमें "" "कुछ है जो मैं बहु-लाइनिंग के लिए उपयोग कर रहा हूं।

इसे बाहर प्रिंट करना चाहेंगे:

name = test 
ID = 42 
sec nr = 11 
acc nr = 55 

उत्तर

14

आप सामने खाली स्थान है, यह उस तरह से प्रिंट किया जाएगा।

मैं आमतौर पर ऐसा करता हूं।

return string.Format(
@" name = {0} 
ID = {1} 
sec nr = {2} 
acc nr = {3}", string, int, int ,int); // types 

अद्यतन: शायद एक खूबसूरत विकल्प:

string[] lines = 
{ 
    " name = {0}", 
    " ID = {1}", 
    " sec nr = {2}", 
    " acc nr = {3}" 
}; 

return string.Format(
     string.Join(Environment.Newline, lines), 
     arg0, arg1, arg2, arg3); 
+2

काम करता है यही कारण है, तो यह एक समाधान है, लेकिन कोड खरोज के बिना इतना बदसूरत लग रहा है का संग्रह है। क्या कोई इसे कुछ हद तक "बेहतर" कर सकता है? – Milan

+1

@Zka: वास्तव में, यह उतना ही अच्छा नहीं है जितना आप इसे प्राप्त कर सकते हैं :( – leppie

+1

विकल्प के लिए धन्यवाद, यह बेहतर दिखता है और मेरे उद्देश्यों के लिए काफी प्रबंधनीय है। – Milan

5

@ से पहले स्ट्रिंग मानक सी # स्ट्रिंग स्वरूपण स्विच बंद, कोशिश

return string.Format(" name = {0}\n ID = {1} \n sec nr = {2} \n acc nr = {3}", 
         string, int, int ,int); // types 

आप @ उपयोग नहीं कर सकते और उपयोग \ n, \ t आदि

संपादित

यह वह जगह है - IMHO - अच्छा के रूप में के रूप में यह

return string.Format("name = {0}\n" + 
         "ID = {1}\n" + 
         "sec nr = {2}\n" + 
         "acc nr = {3}", 
         string, int, int ,int); 
+2

\ n बहुत ही विंडोज अनुकूल नहीं है ... – leppie

+0

असल में हाँ, यह काम करता है लेकिन मुझे वास्तव में बहु-पंक्ति होने की आवश्यकता है क्योंकि इसमें अधिक जानकारी शामिल है इसे एक बहुत लंबी लाइन बनाते हैं। – Milan

+0

@leppie: क्षमा करें, विंडोज फ्रेंडली क्यों नहीं? –

0

नहीं, यह सभी रिक्त स्थान तुम वहाँ में है है हो जाता है।

+0

+1 तटस्थ। इस उत्तर में क्या गलत है? यह एक से अधिक है हालांकि मैं स्वीकार करता हूं कि एक समाधान के बजाय कारण। – Amsakanna

+0

हाँ, इस जवाब में थोड़ा और प्रयास करना चाहिए था। मी culpa। – ben

4

MSDN से एक समाधान:

// Sample for the Environment.NewLine property 
using System; 

class Sample 
{ 
    public static void Main() 
    { 
    Console.WriteLine(); 
    Console.WriteLine("NewLine: {0} first line{0} second line{0} third line", 
          Environment.NewLine); 
    } 
} 
/* 
This example produces the following results: 

NewLine: 
    first line 
    second line 
    third line 
*/ 
+0

दिलचस्प, मैंने कभी इसके बारे में सोचा नहीं होगा –

1
String.Join(Environment.NewLine, value.Select(i => i) 

जहां मूल्यों तार

संबंधित मुद्दे