2011-09-11 7 views
62
के डॉट से पहले स्ट्रिंग में बदलें

मैं एक स्ट्रिंग कहा जाता persons.nameकैसे जावा

मैं /*/ साथ डॉट . को बदलने के लिए यानी मेरी उत्पादन persons/*/name

मैं इस कोड की कोशिश की हो जाएगा चाहते हैं (।):

String a="\\*\\"; 
str=xpath.replaceAll("\\.", a); 

मुझे स्ट्रिंग इंडेक्सऑटऑफबाउंड अपवाद प्राप्त हो रहा है।

मैं डॉट को कैसे बदलूं?

उत्तर

106

आपको डॉट से पहले दो बैकस्लैश की आवश्यकता है, एक स्लैश से बचने के लिए, इसलिए यह हो जाता है, और दूसरा डॉट से बचने के लिए, इसलिए यह शाब्दिक हो जाता है। फॉरवर्ड स्लेश और तारांकन को शाब्दिक माना जाता है।

str=xpath.replaceAll("\\.", "/*/");   //replaces a literal . with /*/ 

http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#replaceAll(java.lang.String,%20java.lang.String)

+1

+1 क्योंकि यह does not संचालित करने के लिए किसी भी आयात की आवश्यकता होती है –

+0

नहीं यह 'होना चाहिए xpath.replaceAll ("\\\\।", "/ * /") '? – ha9u63ar

7

उपयोग Apache Commons Lang:

String a= "\\*\\"; 
str = StringUtils.replace(xpath, ".", a); 

या स्टैंडअलोन JDK के साथ:

String a = "\\*\\"; // or: String a = "/*/"; 
String replacement = Matcher.quoteReplacement(a); 
String searchString = Pattern.quote("."); 
String str = xpath.replaceAll(searchString, replacement);