2013-02-15 34 views
7

कृपया मुझे अभी शुरुआत के सवाल :)मैं कैसे सी # में स्ट्रिंग के अंत करने के लिए प्रतीक जोड़ सकते हैं

string S="abc"; 
S+="\"; 

complile नहीं होंगे माफ कर दीजिए।

string S="abc"; 
S+="\\"; 

कर देगा एस = "abc \\"

मैं कैसे एस कर सकते हैं = "abc \"?

+0

\ के बजाय \ u005c का उपयोग करें और इसे जांचें .. – Rahil2952

+2

आपका दूसरा उदाहरण सही है। आप घड़ी विंडो में एस = "एबीसी \\" देख सकते हैं, लेकिन यह सिर्फ आईडीई चालाक है और स्ट्रिंग में वर्ण से बच रहा है (इसी तरह यदि आपके पास स्ट्रिंग में एक न्यूलाइन चार था, तो घड़ी विंडो "foo \ nbar ") –

+1

@RossMcNab, आपको इसे एक उत्तर देना चाहिए। – Mizipzor

उत्तर

5

इस प्रयास करें:

String S = "abc"; 
S += @"\"; 

@ = शब्दशः स्ट्रिंग शाब्दिक

http://msdn.microsoft.com/en-us/library/aa691090%28v=vs.71%29.aspx

http://msdn.microsoft.com/en-us/library/vstudio/362314fe.aspx

+1

यह ओपी के दूसरे स्निपेट के बराबर बराबर कोड है, और यह समझाता नहीं है कि क्या हो रहा है। –

+1

सहमत - ओपी चिंतित है कि वे बैकस्लैश चरित्र से बचने में असमर्थ हैं। उनका दूसरा उदाहरण सही है, लेकिन दृश्य स्टूडियो डीबगर दिखाता है कि स्लैश स्ट्रिंग में अभी भी मौजूद है (जब यह नहीं है)। – RainbowFish

13

कोड की दूसरी टुकड़ा है आप क्या चाहते हैं (या एक शब्दशः स्ट्रिंग शाब्दिक @"\" जैसा कि अन्य ने सुझाव दिया है), और i टी केवल एक बैकस्लैश जोड़ता है - इसे कंसोल पर प्रिंट करें और आप उसे देखेंगे। कोड की

इन दो टुकड़े:

S += "\\"; 

और

S += @"\"; 

बिल्कुल बराबर हैं। दोनों मामलों में, एक बैकस्लैश संलग्न किया गया है।

मुझे संदेह है कि आप डीबगर दृश्य से भ्रमित हो रहे हैं, जो बैकस्लाश (और कुछ अन्य पात्र) से बच निकलता है। आप S.Length, जो आप देखेंगे को देखकर कि मान्य कर सकते हैं यहां तक ​​कि डीबगर के साथ है 4 के बजाय 5.


ध्यान दें कि यह मौजूदा स्ट्रिंग में डेटा परिवर्तित नहीं होता, लेकिन यह नया स्ट्रिंग का संदर्भ देने के लिए S का मान सेट करता है जिसमें मूल पर बैकस्लैश वाला मूल होता है। .NET में स्ट्रिंग ऑब्जेक्ट्स अपरिवर्तनीय हैं - लेकिन यह एक अन्य विषय है ...

2

आपके पास पहले से ही समाधान है। abc\\ के रूप में यह प्रतीत होता है कि डीबगिंग है क्योंकि वीएस बैकस्लाश से बच जाएगा, कंसोल विंडो में S के मान को प्रिंट करें और आपको abc\ दिखाई देगा। स्ट्रिंग अक्षर की शुरुआत में आप @ जोड़ सकते हैं, उदा।

string S="abc"; 
S+= @"\"; 

जो एक ही चीज़ प्राप्त करेगा।

+0

यह वही प्रभाव होगा जैसा कि 'एस + = "\\";' - एक ही परिणाम प्राप्त करने का एक वैकल्पिक तरीका देने से वास्तव में ओपी की मदद नहीं होती है, मेरे विचार में। –

+0

थोड़ा और स्पष्टीकरण के साथ संपादित किया गया। – DGibbs

1

आप @ चरित्र के साथ बैकस्लैश बच सकते हैं:

string S="abc"; 
S += @"\"; 

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

+0

यह ओपी के कोड के दूसरे भाग के समान परिणाम प्राप्त करने का एक वैकल्पिक तरीका प्रदान करता है ... जो अभी भी डीबगर में ओपी देख रहा है, इसके स्पष्टीकरण के बिना भ्रम पैदा करेगा। –

4
string S = "abs" + "\\"; 

चाहिए और abc\ में परिणाम है।

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

1

आपका दूसरे उदाहरण यही कारण है कि आप परिणाम स्ट्रिंग में दो स्लैश देखते हैं बिल्कुल ठीक

string S="abc"; 
S+="\\"; 

दृश्य स्टूडियो प्रदर्शित करता है स्ट्रिंग से बच गया है। आप इस

@"\" 

की तरह घोषित स्ट्रिंग से बचने यह संकलन नहीं है, क्योंकि संकलक भागने प्रतीक के बाद एक चरित्र की उम्मीद है का उपयोग नहीं करना चाहते हैं

string S="abc"; 
S+="\"; 
-2

इस

string s="abc"; 
s = s+"\\"; 
+0

संकलित नहीं होगा .. – DGibbs

+0

मैंने अपने उदाहरण और इसके कामकाज में कोशिश की है। – Utkarsh

+2

@Utkarsh: मुझे यकीन है कि आप नहीं हैं। आपने एक वैरिएबल 's' घोषित नहीं किया है। –

0
string S="abc"; 
S+="\\"; 
Console.WriteLine(S); // This is what you're missing ;) 
प्रयास करें

आप देखेंगे कि आपकी स्ट्रिंग बिल्कुल गलत नहीं है।

बैकस्लैश (\) एक एस्केप वर्ण है, और आप इस तरह "\r\n" है, जो एक NewLine चरित्र का प्रतिनिधित्व करता है, या "\"" जो मूल रूप से देता है के रूप में विशेष वर्ण है कि आप सामान्य रूप से एक स्ट्रिंग में सम्मिलित करने के लिए सक्षम नहीं होगा, प्राप्त करने के लिए अनुमति देता है आप " चरित्र।

\ चरित्र प्राप्त करने के लिए, आपको "\\" इनपुट करना होगा जो आप कर रहे हैं और जो भी आप चाहते हैं।

शब्दशः (@) का उपयोग करना है, तो @"\" == "\\"\\ में \ की सभी घटनाओं बदल देता है। इसका आमतौर पर पथ और रेगेक्स के लिए उपयोग किया जाता है, जहां बड़ी संख्या में शाब्दिक \ की आवश्यकता होती है। @"C:\MyDirectory\MyFile" कहकर "C:\\MyDirectory\\MyFile" से अधिक आरामदायक है।