उपयोग करने में कोष्ठक कैसे बच सकते हैं string.Format
।
उदाहरण के लिए:
String val = "1,2,3"
String.Format(" foo {{0}}", val);
यह उदाहरण एक अपवाद नहीं फेंकता है, लेकिन स्ट्रिंग को आउटपुट करता है foo {0}
।
क्या कोष्ठक से बचने का एक तरीका है?
उपयोग करने में कोष्ठक कैसे बच सकते हैं string.Format
।
उदाहरण के लिए:
String val = "1,2,3"
String.Format(" foo {{0}}", val);
यह उदाहरण एक अपवाद नहीं फेंकता है, लेकिन स्ट्रिंग को आउटपुट करता है foo {0}
।
क्या कोष्ठक से बचने का एक तरीका है?
जवाबों:
उत्पादन के लिए आपको foo {1, 2, 3}
कुछ करना होगा:
string t = "1, 2, 3";
string v = String.Format(" foo {{{0}}}", t);
आउटपुट का {
उपयोग {{
करने के लिए और आप उपयोग करने के लिए आउटपुट के }
लिए }}
।
या अब, आप इस तरह से सी # स्ट्रिंग प्रक्षेप का उपयोग कर सकते हैं (C # 6.0 में उपलब्ध सुविधा)
ब्रैकेट बचना: स्ट्रिंग इंटरपोलेशन $ ("") । यह C # 6.0 में नई सुविधा है
var inVal = "1, 2, 3";
var outVal = $" foo {{{inVal}}}";
//Output will be: foo {1, 2, 3}
$"a = {{ {a} }}"
) में भी काम कर रहा है
string v = $" foo {{{t}}}";
। यदि आपके पास बचने के लिए अन्य पात्र हैं, तो वह कर्ली नहीं है आप $ @ कॉम्बो का उपयोग कर सकते हैंstring v2 = $@"\foo {{{t}}}\";
हां आउटपुट {
में string.Format
आपको इस तरह से बचना होगा{{
तो यह
String val = "1,2,3";
String.Format(" foo {{{0}}}", val);
उत्पादन होगा "foo {1,2,3}"
।
लेकिन आपको C # में एक डिज़ाइन बग के बारे में जानना होगा, जो यह है कि उपरोक्त तर्क पर जाकर आप मान लेंगे कि यह कोड {24.00} प्रिंट होगा
int i = 24;
string str = String.Format("{{{0:N}}}", i); //gives '{N}' instead of {24.00}
लेकिन यह प्रिंट {एन}। ऐसा इसलिए है क्योंकि सी # पार्स सीक्वेंस और फॉर्मेट कैरेक्टर्स से बच जाता है। उपरोक्त मामले में वांछित मूल्य प्राप्त करने के लिए आपको इसके बजाय इसका उपयोग करना होगा।
String.Format("{0}{1:N}{2}", "{", i, "}") //evaluates to {24.00}
संदर्भ लेख String.Format gottach और स्ट्रिंग स्वरूपण अक्सर पूछे जाने वाले प्रश्न
string.Format( "{{{0}}}", i.ToString("N") );
जो कुछ के लिए अधिक पठनीय हो सकता है।
घुंघराले कोष्ठक से बचना और स्ट्रिंग प्रक्षेप का उपयोग करना एक दिलचस्प चुनौती है। स्ट्रिंग प्रक्षेप और पार्सिंग से बचने के लिए आपको चौगुनी कोष्ठक का उपयोग करने की आवश्यकता है ।string.format
string localVar = "dynamic";
string templateString = $@"<h2>{0}</h2><div>this is my {localVar} template using a {{{{custom tag}}}}</div>";
string result = string.Format(templateString, "String Interpolation");
// OUTPUT: <h2>String Interpolation</h2><div>this is my dynamic template using a {custom tag}</div>
C # में json strings ad-hoc (बिना किसी class / object के serializing) के निर्माण की खोज में यहाँ आया था। दूसरे शब्दों में, C # और " वर्बेटिम स्ट्रिंग लिटरल्स " में इंटरपोलेटेड स्ट्रिंग्स का उपयोग करते हुए ब्रेसिज़ और उद्धरण से कैसे बच सकते हैं (जैसे '@' उपसर्ग के साथ डबल उद्धृत स्ट्रिंग्स) ...
var json = $@"{{""name"":""{name}""}}";
[TestMethod]
public void BraceEscapingTest()
{
var result = String.Format("Foo {{0}}", "1,2,3"); //"1,2,3" is not parsed
Assert.AreEqual("Foo {0}", result);
result = String.Format("Foo {{{0}}}", "1,2,3");
Assert.AreEqual("Foo {1,2,3}", result);
result = String.Format("Foo {0} {{bar}}", "1,2,3");
Assert.AreEqual("Foo 1,2,3 {bar}", result);
result = String.Format("{{{0:N}}}", 24); //24 is not parsed, see @Guru Kara answer
Assert.AreEqual("{N}", result);
result = String.Format("{0}{1:N}{2}", "{", 24, "}");
Assert.AreEqual("{24.00}", result);
result = String.Format("{{{0}}}", 24.ToString("N"));
Assert.AreEqual("{24.00}", result);
}
बचने वाली ब्रैकेट: स्ट्रिंग इंटरपोलेशन $ (""):
अब, आप इस तरह सी # स्ट्रिंग प्रक्षेप का उपयोग कर सकते हैं (C # 6.0 में उपलब्ध सुविधा)
var inVal= "1, 2, 3";
var outVal= $" foo {{{inVal}}}";
//Output will be: foo {1, 2, 3}
मेरा लक्षय:
मुझे "{CR}{LF}"
एक string
वैरिएबल को मान असाइन करने की आवश्यकता है delimiter
।
कोड c #:
string delimiter= "{{CR}}{{LF}}";
नोट: विशेष वर्णों से बचने के लिए आम तौर पर आपको उपयोग करना होगा। घुंघराले ब्रैकेट खोलने के लिए {{} जैसे एक अतिरिक्त का उपयोग करें। घुंघराले ब्रैकेट को बंद करने के लिए}, एक अतिरिक्त}} का उपयोग करें।