2011-03-17 7 views
9

मैं अक्सर घुंघराले ब्रेसिज़ एक स्ट्रिंग में देखते हैं आमतौर पर इस तरह के रूप में, एक नंबर युक्तघुंघराले ब्रेसिज़ {0}

string something = "I have {0} cats"; 

जबकि मैं काम कर सकते हैं कि इसका क्या मतलब, मैं कह सकता हूँ मैं कभी नहीं पढ़ा है इसके उपयोग से संबंधित कोई दस्तावेज। सी # स्ट्रिंग प्रलेखन इन से संबंधित किसी भी जानकारी से रहित प्रतीत होता है। क्या कोई मुझे सही दिशा दिखा सकता है?

+2

यह ध्यान देने योग्य है कि [इंटरपोलेटेड स्ट्रिंग्स] (https://msdn.microsoft.com/en-us/library/dn961160.aspx) के परिचय के साथ, घुंघराले ब्रेसिज़ हो सकते हैं तारों में बहुत अधिक दिखाई दे रहा है - स्ट्रिंग की शुरुआत में $ के लिए देखें। [यहां एक अच्छी व्याख्या है] (http://stackoverflow.com/a/32879070/340045)। – Ben

उत्तर

19

स्ट्रिंग में प्रयुक्त। मूल्य पैरामीटर के लिए प्लेसहोल्डर के रूप में फ़ॉर्मेट। स्ट्रिंग। फोर्मेट ("मेरे पास {0} बिल्लियों" हैं, 5); प्रिंट्स "मेरे पास 5 बिल्लियों हैं"

तो आप string.Format (कुछ, 5) का उपयोग कर सकते हैं; और एक ही परिणाम प्राप्त ऊपर

3

इसका लगभग निश्चित रूप से बाद में एक String.Format कॉल, जहां गिने प्लेसहोल्डर अतिरिक्त पैरामीटर की जगह में इस्तेमाल किया:

string something = "I have {0} cats"; 
int myNumCats = 2 
var theResult = String.Format(something,myNumCats); 
10

यह सामान्य प्रारूप स्ट्रिंग String.Format द्वारा उपयोग की जाती है, और इसे "समग्र स्वरूपण" कहा जाता है। इसके बारे में अधिक जानकारी के लिए, here देखें।

+0

सही नाम और लिंक के साथ पहला जवाब –

2

* सी # 6.0 & दोस्तों के साथ, घुंघराले ब्रेसिज़ केवल string.Format के लिए नहीं हैं! अब वे interpolated strings को इंगित कर सकते हैं, जहां आप सभी string.Format & {0} {1} {2} ओवरहेड के बिना सी # ऑब्जेक्ट्स और कोड में मिश्रण कर सकते हैं।

नोट: अंतर्वेशित तार डॉलर चिन्ह के साथ शुरू : $

the language reference page linked above से:

श्रृंखला बनाते हैं के लिए प्रयुक्त। एक इंटरपोलेटेड स्ट्रिंग टेम्पलेट स्ट्रिंग की तरह दिखती है जिसमें इंटरपोलेटेड एक्सप्रेशन होते हैं। एक इंटरपोलेटेड स्ट्रिंग एक स्ट्रिंग देता है जो इंटरपोलेटेड अभिव्यक्तियों को प्रतिस्थापित करता है जिसमें यह उनके स्ट्रिंग प्रस्तुतियों के साथ होता है।

एक इंटरपोलेटेड स्ट्रिंग के तर्क से एक समग्र प्रारूप स्ट्रिंग से समझना आसान है। उदाहरण के लिए, अंतर्वेशित स्ट्रिंग के लिए

Console.WriteLine($"Name = {name}, hours = {hours:hh}");

दो अंतर्वेशित भाव, '{नाम}' और '{: hh घंटे}' शामिल हैं। बराबर समग्र प्रारूप स्ट्रिंग है:

Console.WriteLine("Name = {0}, hours = {1:hh}", name, hours);

नोट: आप नहीं पता था, तो Console.WriteLine का एक प्रकार है निर्मित string.Format है, जो ऊपर के उदाहरण अगर में स्पष्ट नहीं हो सकता है आपको लगता है कि में जा नहीं पता था।

आप Console.WriteLine जादू पर निर्भर बिना एक ही स्ट्रिंग बाहर निकलने के लिए, यह इस है कि पढ़ने के लिए आसान हो सकता है चाहता है तो ...

string message = $"Name = {name}, hours = {hours:hh}"; // interpolated 

... के बराबर है ...

string message = string.Format("Name = {0}, hours = {1:hh}", name, hours); // old school 

एक अंतर्वेशित स्ट्रिंग की संरचना है:

$"<text> {<interpolated-expression> [,<field-width>] [<:format-string>] } <text> ..."
जहां:

  • क्षेत्र-चौड़ाई एक हस्ताक्षरित पूर्णांक है जो chara की संख्या इंगित करता है मैदान में cters। यदि यह सकारात्मक है, तो क्षेत्र सही-गठबंधन है; अगर नकारात्मक, बाएं गठबंधन।
  • प्रारूप-स्ट्रिंग एक स्वरूप स्ट्रिंग प्रारूपित वस्तु के प्रकार के लिए उपयुक्त है। उदाहरण के लिए, डेटटाइम मान के लिए, यह मानक दिनांक और समय प्रारूप स्ट्रिंग जैसे "डी" या "डी" हो सकता है।

आप स्ट्रिंग शाब्दिक का उपयोग कर कहीं भी एक इंटरपोलेटेड स्ट्रिंग का उपयोग कर सकते हैं। इंटरपोलेटेड स्ट्रिंग का मूल्यांकन प्रत्येक बार इंटरपोलेटेड स्ट्रिंग निष्पादित कोड के साथ किया जाता है। यह आपको एक इंटरपोलेटेड स्ट्रिंग की परिभाषा और मूल्यांकन को अलग करने की अनुमति देता है।

एक इंटरप्लाटेड स्ट्रिंग में घुंघराले ब्रेस ("{" या "}") को शामिल करने के लिए, दो घुंघराले ब्रेसिज़, "{{" या "}}" का उपयोग करें।


@Ben points out in a comment, above रूप

*। (क्षमा करें, जिस तरह से याद किया गया है।)

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