2009-04-30 15 views
7

पर फोरमेट अपवाद मैं string.Format को एक पठनीय स्ट्रिंग पर चला रहा हूं जिसमें HTML + जावास्क्रिप्ट का थोड़ा सा हिस्सा है लेकिन मुझे इसके बजाय System.FormatException मिलता है।string.Format सिस्टम फेंकता है। एचटीएमएल + जावास्क्रिप्ट

यह मेरा प्रारूप स्ट्रिंग है:

<script type="text/javascript"> 
    function {0}_showHideFieldWindow() { 
     if ({0}.IsCustomizationWindowVisible()) { 
      {0}.HideCustomizationWindow(); 
     } else { 
      {0}.ShowCustomizationWindow(); 
     } 
    } 
</script> 

सभी मैं कर रहा हूँ ऑब्जेक्ट नाम में गुजर रहा है। इस तरह:

string.Format(javascript, "grid"); 

उत्तर

12

जब से तुम स्ट्रिंग आप उन्हें दोहरीकरण ({{ और }}) सोच वे टोकन हैं से फ़ॉर्मेटर को रोकने के लिए द्वारा उन्हें बचने के लिए की जरूरत है घुंघराले ब्रेसिज़ है।

आपका स्ट्रिंग प्रारंभ कुछ इस तरह दिखना चाहिए:

String javascript = @"<script type=""text/javascript""> 
      function {0}_showHideFieldWindow() {{ 
      if ({0}.IsCustomizationWindowVisible()) {{ 
       {0}.HideCustomizationWindow(); 
      }} else {{ 
       {0}.ShowCustomizationWindow(); 
      }} 
     }} 
    </script>"; 
+1

, मानक एस्केप वर्ण नहीं है सी # में बैकस्लैश (\\)? यही है, घुंघराले ब्रेसिज़ को "{{}}" के बजाय "\ {\}" से बच नहीं जाना चाहिए? मैं समझता हूं कि डबल ब्रेसिज़ काम करते हैं, लेकिन क्या यह सबसे अच्छा अभ्यास है? –

+4

चूंकि वह स्ट्रिंग से पहले @ प्रतीक का उपयोग कर रहा है, इसलिए बैकस्लैश का अर्थ शाब्दिक रूप से बैकस्लैश के रूप में किया जाएगा, इसलिए –

+1

से बचने वाला कुछ भी नहीं होगा जॉन सही है - क्योंकि यह एक क्रियात्मक स्ट्रिंग है क्योंकि कुछ ऐसे भाग निकलते हैं जिन्हें आप कर सकते हैं और उनमें से सभी शामिल हैं चरित्र को दोगुना करना (यानी {बनें {{, "बन जाता है", आदि) –

6

String.Format जरूरत अतिरिक्त कोष्ठक भाग निकले किया जाना है। आप बेहतर होगा कुछ इस तरह है, जो प्रत्येक वर्ग के बचने की तुलना में अधिक पठनीय हो सकता है कर सकता है यदि आप String.Format की कार्यक्षमता के सभी की जरूरत नहीं है:

mystring.Replace("{0}","grid"); 
बस जिज्ञासा से बाहर
+0

+1 इस तरह मैंने इसे मूल रूप से हल किया। –

+0

+1 यह आसान होगा और थोड़ा तेज़ भी होगा। –

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