2012-03-02 14 views
5

मेरे पास वेब.config में ऐपसेटिंग है।ConfigurationManager.AppSettings " n" से "\ n" क्यों परिवर्तित करें?

<add key="key" value="\n|\r"/> 

जब मैं यह ConfigurationManager.AppSettings["key"] द्वारा पढ़ा यह देता है "\\ n | \\ r"। क्यों?

+0

आपका प्रश्न आपके शीर्षक से ठीक से मेल नहीं खाता है ... – cjk

+0

@cjk: आप ऐसा क्यों सोचते हैं? कृपया ध्यान से प्रश्न पढ़ें। –

+0

आपने इसे अभी अपडेट किया है। क्या यह डीबगर में है जिसे आप देख रहे हैं \\ n | \\ r'? – cjk

उत्तर

3

डीबगर में, क्योंकि बैकस्लैश टैब (\ t) और लाइन एंडिंग्स (\ n) जैसी चीजों के लिए उपयोग किया जाने वाला एक विशेष चरित्र है, इसे किसी अन्य बैकस्लैश के उपयोग से बचाना होगा। इसलिए किसी भी पाठ में एक वास्तविक \ \ के रूप में प्रदर्शित किया जाएगा \। यदि आप इसे किसी फ़ाइल में प्रिंट करते हैं या किसी अन्य तरीके से इसका उपयोग करते हैं, तो आप पाएंगे कि आपकी स्ट्रिंग में केवल एक ही है।

यह कॉन्फ़िगरेशन प्रबंधक कुछ भी नहीं कर रहा है।

0
string str = "\n";// means \n 
string str1 = @"\n";// means \\n 

AppSettings से, यह .. लगता है कि जब आप कुंजी का मान प्राप्त, @ आंतरिक रूप से लपेटा जाता है यह संकलक द्वारा किया जाता है क्रम नहीं।

1

मैंने स्ट्रिंग प्रतिस्थापन के साथ एक ही समस्या हल की।
सुंदर नहीं है .. लेकिन काम करता है!

ConfigurationManager.AppSettings["Key"].Replace("\\n", "\n") 
+0

धन्यवाद मेरा दिन // –

1

बैकस्लैश से बचने वाक्य रचना केवल सी # संकलक द्वारा स्ट्रिंग शाब्दिक के अंदर मान्यता प्राप्त है। चूंकि आपकी स्ट्रिंग को रनटाइम पर किसी XML फ़ाइल से पढ़ा जा रहा है, इसलिए आपको अपनी स्ट्रिंग में उन वर्णों को शामिल करने के लिए XML- संगत एस्केपिंग (वर्ण इकाइयां) का उपयोग करने की आवश्यकता है। इस प्रकार, आपके एप्लिकेशन सेटिंग प्रविष्टि ऐसा दिखाई देगा:

<add key="key" value="&x10;|&x13;"/> 

क्योंकि 10 और 13 linefeed और गाड़ी वापसी के लिए हेक्स मान क्रमश: कर रहे हैं।

सीजेके की तरह, अतिरिक्त स्लैश डीबगर द्वारा डाला जा रहा है यह इंगित करने के लिए कि यह शाब्दिक स्लैश और एक बचने का अनुक्रम नहीं देख रहा है।

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