2015-09-24 6 views
5

में '{Name}' को प्रतिस्थापित करने के लिए मुझे मूल्यों के साथ {Name} जैसे स्ट्रिंग में एक मान को प्रतिस्थापित करने की आवश्यकता है।
हम विशेष चरित्र { और } को कैसे बदल सकते हैं?जावा

str.replaceAll("{Name}","A"); 

लेकिन यह काम नहीं करता है अगर हम विशेष वर्ण:
मैं इस कोशिश की है।

+2

कोशिश; एक शाब्दिक प्रतिस्थापन के लिए –

उत्तर

12

JavaDoc के अनुसार, .replaceAll(String regex, String replacement) विधि पहले पैरामीटर के रूप में एक नियमित अभिव्यक्ति में ले जाती है।

यह इतना है कि { और } नियमित अभिव्यक्ति वाक्य रचना में विशेष अर्थ नहीं होता है और इस तरह भाग निकले की जरूरत है। str.replaceAll("\\{Name\\}","A"); का उपयोग करने का प्रयास करें।

अतिरिक्त \ सामने खतरा { और } वास्तविक पात्रों के रूप में (उनके विशेष अर्थ के बिना) के लिए नियमित अभिव्यक्ति इंजन निर्देश देता है। चूंकि यह जावा है, इसलिए आपको \ चरित्र से भी बचने की आवश्यकता है, यही कारण है कि आपको उनमें से दो की आवश्यकता है।

+1

'replaceAll' ओवरकिल है। –

+0

ओवरकिल लेकिन लोकप्रिय, बिना किसी प्रतिबिंब के एक कोड से अगले तक कॉपी किया गया –

+0

@npinti: क्या लूप? 'प्रतिस्थापन' सभी घटनाओं को प्रतिस्थापित करता है, जैसे 'replaceAll' करता है। –

14

replaceAll के बजाय replace का उपयोग करें, क्योंकि replace नियमित अभिव्यक्ति की अपेक्षा नहीं करता है और विश्लेषण नहीं करता है।

उदाहरण: (live copy)

String str = "Here it is: {Name} And again: {Name}"; 
System.out.println("Before: " + str); 
str = str.replace("{Name}","A"); 
System.out.println("After: " + str); 

आउटपुट: str.replaceAll ("\\ {नाम \\}", "ए") के साथ पात्रों पलायन करने के लिए

 
Before: Here it is: {Name} And again: {Name} 
After: Here it is: A And again: A