2009-07-22 10 views
15

मैं "।" को प्रतिस्थापित करना चाहता हूं। एक स्ट्रिंग/डबल में "," द्वारा मैं एक फ़ाइल में लिखना चाहता हूं।java.lang.String.replace समस्या के लिए संकेत?

निम्नलिखित जावा कोड

double myDouble = myObject.getDoubleMethod(); // returns 38.1882352941176 
System.out.println(myDouble); 

String myDoubleString = "" + myDouble; 
System.out.println(myDoubleString); 

myDoubleString.replace(".", ","); 
System.out.println(myDoubleString); 

myDoubleString.replace('.', ','); 
System.out.println(myDoubleString); 

का उपयोग मैं निम्नलिखित उत्पादन

38.1882352941176 
38.1882352941176 
38.1882352941176 
38.1882352941176 

क्यों की जगह नहीं है क्या यह करने के लिए माना जाता है मिल सकता है? मैं उम्मीद करता हूं कि पिछली दो पंक्तियों में "," शामिल है।

क्या मुझे कुछ और करना है? सुझाव?

+5

यह पिछले कुछ सालों में बहुत सारे जावा न्यूबीज को पार कर गया है। –

+2

मैंने प्रतिस्थापन के दस्तावेज़ों को दोबारा पढ़ा है और यह स्पष्ट रूप से "एक नई स्ट्रिंग देता है ..." ;-) – CL23

उत्तर

20

आपको वैरिएबल पर नया मान वापस असाइन करने की आवश्यकता है।

double myDouble = myObject.getDoubleMethod(); // returns 38.1882352941176 
System.out.println(myDouble); 

String myDoubleString = "" + myDouble; 
System.out.println(myDoubleString); 

myDoubleString = myDoubleString.replace(".", ","); 
System.out.println(myDoubleString); 

myDoubleString = myDoubleString.replace('.', ','); 
System.out.println(myDoubleString); 
+4

सामान्य रूप से समस्या कंप्यूटर के सामने बैठती है ;-) Thx – CL23

+6

यह एक नया कारण देता है स्ट्रिंग यह है कि स्ट्रिंग जावा में अपरिवर्तनीय हैं। – Powerlord

+1

पीईबीकेएसी - कुंजीपटल और चेयर के बीच समस्या मौजूद है। :-P –

11

मूल स्ट्रिंग को संशोधित नहीं किया जा रहा है। कॉल संशोधित स्ट्रिंग देता है, तो आप ऐसा करने के लिए आवश्यकता होगी:, स्ट्रिंग्स

String newString = myDoubleString.replace(".", ","); 
5

replaceएक नया स्ट्रिंग रिटर्न (के बाद से स्ट्रिंग जावा में अपरिवर्तनीय है) अपरिवर्तनीय हैं। वे नहीं बदल सकते हैं। यदि आप एक स्ट्रिंग विधि को कॉल कर रहे हैं जो इसे किसी भी तरह से बदलता है, तो आपको रिटर्न वैल्यू स्टोर करना होगा। हमेशा।

मैं :) विश्वविद्यालय में

+0

लेकिन आपको 'newString' को पेश करने की आवश्यकता नहीं है, क्योंकि यद्यपि' स्ट्रिंग 'ऑब्जेक्ट्स अपरिवर्तनीय हैं,' स्ट्रिंग 'ऑब्जेक्ट्स के संदर्भ बदला जा सकता है (यदि वे' अंतिम 'नहीं हैं): http://stackoverflow.com/questions/1552301/अपरिवर्तनीय-ऑफ-स्ट्रिंग-इन-जावा – Raedwald

3

हमेशा याद रखें:

String modded = myDoubleString.replace(".",","); 
System.out.println(modded); 
10

कई बार बड़ा सवाल है क्यों DecimalFormat का उपयोग करने के बजाय स्ट्रिंग की जगह नहीं कर अधिक से अधिक इस के साथ बाहर पकड़े जाने याद है?

+0

बहुत अच्छा बिंदु! आपका जवाब मेरे प्रश्न से परे चला गया है, लेकिन उस समस्या को हल करता है जो मेरे पास अनिवार्य रूप से था। मैं DecimalFormat नहीं जानता था, धन्यवाद! – CL23

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