2012-11-07 14 views
18

काम नहीं करता है मैं स्ट्रिंग के एक हिस्से को दूसरी स्ट्रिंग के साथ प्रतिस्थापित करने की कोशिश कर रहा हूं।सी # स्ट्रिंग प्रतिस्थापन

  1. path.Replace(@"\bin\Debug", @"\Resource\People\VisitingFaculty.txt");

  2. path.Replace("\\bin\\Debug", "\\Resource\\People\\VisitingFaculty.txt");

: और अधिक सटीक मैं C:\Users\Desktop\Project\bin\Debug

है और मैं साथ \Resources\People

मैं निम्नलिखित की कोशिश की है \bin\Debug को बदलने के लिए कोशिश कर रहा हूँ होना करने के लिए

उपर्युक्त में से कोई भी काम नहीं करता है, क्योंकि स्ट्रिंग एक जैसी है और कुछ भी नहीं बदला गया है। क्या मुझसे कुछ गलत हो रही है?

+3

"यह काम नहीं करता है" ऐसा कुछ है जो आपको वास्तव में किसी प्रश्न में नहीं होना चाहिए। क्या काम नहीं करता है? यह क्या करता है? ऐसा नहीं करता कि यह क्या करना चाहिए? क्या त्रुटियां हैं, यदि हां, तो वे क्या हैं? – Servy

+1

काम नहीं करता है, ऐसा नहीं करता है जो इसे करना है, स्ट्रिंग को किसी अन्य स्ट्रिंग से प्रतिस्थापित करें। यह एक प्रश्नोत्तर शैली प्रश्न है। मुझे अभी जवाब मिला और इस क्यू एंड ए स्टाइल प्रश्न –

+1

बनाया, जबकि एक प्रश्न का उत्तर देने के लिए ठीक है, सवाल अभी भी एक ही मानकों पर होगा। यह सवाल, अगर अकेले पूछा जाता है, तो कम गुणवत्ता वाला प्रश्न होगा। आपका उत्तर उस पर प्रभाव नहीं डालता (और नहीं कर सकता)। जैसा कि मैंने कहा, "यह काम नहीं करता" का मतलब कुछ भी नहीं है। आपको दोनों को यह बताने की ज़रूरत है कि आप क्या करना चाहते हैं, या इसे करना चाहते हैं, साथ ही यह वास्तव में क्या करता है। इस मामले में, "यह काम नहीं करता" का अर्थ है कि 'पथ' नहीं बदला गया है; इसमें मूल स्ट्रिंग है। यह त्रुटि नहीं करता है, यह स्ट्रिंग को वांछित आउटपुट के अलावा किसी अन्य चीज़ में नहीं बदलता है, और समस्या सशर्त नहीं है। – Servy

उत्तर

50

समस्या यह है कि तार अपरिवर्तनीय हैं। विधियों को प्रतिस्थापित करने, घटाने आदि स्ट्रिंग को स्वयं नहीं बदलते हैं। वे एक नई स्ट्रिंग बनाते हैं और इसे प्रतिस्थापित करते हैं। तो के लिए ऊपर कोड सही यह

path1 = path.Replace("\\bin\\Debug", "\\Resource\\People\\VisitingFaculty.txt"); 

या बस

path = path.Replace("\\bin\\Debug", "\\Resource\\People\\VisitingFaculty.txt"); 

यदि अन्य चर की जरूरत नहीं है

संपादित इस उत्तर जाने वाला रिमाइंडर तार कर रहे हैं होना चाहिए अपरिवर्तनीय। आपके द्वारा किए गए किसी भी बदलाव से वास्तव में एक नई स्ट्रिंग बन जाएगी। तो इसे सब कुछ ध्यान में रखें (स्मृति प्रबंधन सहित)

+5

या बस 'पथ = पथ। बदलें ("\\ bin \\ डीबग", "\\ संसाधन \\ लोग \\ VisitingFaculty.txt");' अगर कोई दूसरा परिवर्तनीय की आवश्यकता नहीं है। – kprobst

+0

अभी इसे जोड़ रहा है: डी मैंने पहली बार एक अलग चर का उपयोग किया था, इसलिए यह दिखाया गया है कि यह वास्तव में एक लौटने वाली स्ट्रिंग है लेकिन मैं उस भाग को भी विज्ञापन दूंगा –

+2

प्रश्न और उत्तर दोनों को दोबारा वोट दिया क्योंकि इससे समस्या का समाधान हुआ। मुझे विश्वास नहीं है कि डाउन-वोट प्रश्न के आधार पर उचित था, और "string.replace सी # काम नहीं कर रहा" की एक खोज ने मुझे यहां लाया। –

9

path.Replace विधि वास्तव में string देता है। आप निम्न कार्य करना चाहिए:

path = path.Replace("firstString", "secondString"); 
+0

यह एक प्रश्नोत्तर शैली प्रश्न था। मैंने इसे स्वयं उत्तर दिया –

+0

एलओएल, ठीक है आप वहां जाते हैं। – PaulG

+4

@macrian और इसका मतलब यह नहीं है कि अन्य लोग जवाब नहीं दे सकते हैं। अगर कोई और उत्तर दे सकता है कि वे आपके से बेहतर महसूस करते हैं तो उन्हें अतिरिक्त उत्तर देने का हर अधिकार है। यह एसओ के उद्देश्य का हिस्सा है; हर कोई सबसे अच्छा जवाब (लेखक की परवाह किए बिना) जवाब देने और मतदान करने में सक्षम है शीर्ष पर तैरता है। – Servy

6
String.Replace(string,string) returns string. 

तो, कुछ स्ट्रिंग चर में नया पथ को बचाने।

path = path.Replace("\\bin\\Debug", "\\Resource\\People\\VisitingFaculty.txt"); 
संबंधित मुद्दे