2009-06-01 9 views
5

सी # कोड की निम्न बिट के साथ कोष्ठक को बदलने के लिए कुछ भी करने को नहीं लगता है प्रतीत नहीं होता:String.Replace रिक्त स्ट्रिंग

String str = "{3}"; 
str.Replace("{", String.Empty); 
str.Replace("}", String.Empty); 

Console.WriteLine(str); 

यह बाहर थूकना समाप्त होता है: {3}। मुझे नहीं पता कि यह क्यों है। मैं हर समय जावा में इस तरह की चीज करता हूं। क्या .NET स्ट्रिंग हैंडलिंग का कुछ नज़र है जो मुझे बढ़ाता है?

ब्रायन

+0

http: // stackoverflow का संभावित डुप्लिकेट।com/प्रश्न/1948978/स्ट्रिंग-बदलें-नहीं काम। यह पहले आया था, लेकिन दूसरे का एक स्पष्ट शीर्षक है। – goodeye

उत्तर

18

स्ट्रिंग वर्ग immutable है; str.Replacestr को परिवर्तित नहीं करेगा, यह परिणाम के साथ एक नई स्ट्रिंग वापस करेगा। बजाय इस एक का प्रयास करें:

String str = "{3}"; 
str = str.Replace("{", String.Empty); 
str = str.Replace("}", String.Empty); 

Console.WriteLine(str); 
5

मुझे लगता है कि आप String.Replace संदर्भ में

String str = "{3}"; 
str = str.Replace("{", String.Empty); 
str = str.Replace("}", String.Empty); 

Console.WriteLine(str); 

देखो करना होगा:

वापसी मूल्य प्रकार: System.String

पुरानी वैल्यूके सभी उदाहरणों के साथ इस उदाहरण के बराबर एक स्ट्रिंग लेकिन नए वैल्यू के साथ बदल दिया।

5

प्रतिस्थापन फ़ंक्शन संशोधित स्ट्रिंग देता है, इसलिए आपको इसे अपने str चर पर वापस असाइन करना होगा।

String str = "{3}"; 
str = str.Replace("{", String.Empty); 
str = str.Replace("}", String.Empty); 

Console.WriteLine(str); 
6

Str.Replace एक नई स्ट्रिंग देता है। इसलिए, आपको इसे निम्न प्रकार से उपयोग करने की आवश्यकता है:

String str = "{3}"; 
str = str.Replace("{", String.Empty); 
str = str.Replace("}", String.Empty); 
7

प्रतिस्थापन वास्तव में उस स्ट्रिंग इंस्टेंस को संशोधित नहीं करता है जिस पर आप इसे कॉल करते हैं। यह सिर्फ इसके बजाय एक संशोधित प्रति वापस देता है।

प्रयास करें यह एक:

String str = "{3}"; 
str = str.Replace("{", String.Empty); 
str = str.Replace("}", String.Empty); 

Console.WriteLine(str); 
8

स्ट्रिंग अपरिवर्तनीय है; आप एक स्ट्रिंग का उदाहरण नहीं बदल सकते हैं। आपके दो प्रतिस्थापन() कॉल मूल स्ट्रिंग के लिए कुछ भी नहीं करते हैं; वे एक संशोधित स्ट्रिंग वापस करते हैं। आप इसे इसके बजाय चाहते हैं:

String str = "{3}"; 
str = str.Replace("{", String.Empty); 
str = str.Replace("}", String.Empty); 

Console.WriteLine(str); 

यह जावा में भी इस तरह से काम करता है।

4

मेरा मानना ​​है कि str.Replace एक मान देता है जिसे आपको अपने चर को असाइन करना होगा। तो अगर आप की तरह कुछ करने की आवश्यकता होगी:

String str = "{3}"; 
str = str.Replace("{", String.Empty); 
str = str.Replace("}", String.Empty); 

Console.WriteLine(str); 
3

Replace विधि रिटर्न प्रतिस्थापन के साथ एक स्ट्रिंग।

str = str.Replace("{", string.Empty); 
str = str.Replace("}", string.Empty); 

Console.WriteLine(str); 
3
अब तक सभी सुझावों के अलावा

- तुम भी उत्पादन में इनलाइन की जगह कार्यों का उपयोग करके मूल स्ट्रिंग के मूल्य में परिवर्तन किए बिना इसे पूरा कर सकता है ..: क्या मुझे लगता है कि आप देख रहे हैं यह है

String str = "{3}"; 

Console.WriteLine(str.Replace("{", String.Empty).Replace("}", String.Empty)); 
संबंधित मुद्दे