जावा में एक स्ट्रिंग में डॉट (?) कैसे बदलें


87

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

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

मैंने इस कोड की कोशिश की:

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

मुझे StringIndexOutOfBoundsException मिल रहा है।

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

जवाबों:


147

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

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
क्या यह नहीं होना चाहिए xpath.replaceAll("\\\\.", "/*/")?
ha9u63ar

9

अपाचे कॉमन्स लैंग का उपयोग करें :

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);

9

यदि आप एक साधारण स्ट्रिंग को बदलना चाहते हैं और आपको नियमित अभिव्यक्ति की क्षमताओं की आवश्यकता नहीं है, तो आप बस उपयोग कर सकते हैं replace, नहीं replaceAll

replace प्रत्येक मिलान विकल्प को प्रतिस्थापित करता है, लेकिन अपने तर्क को एक नियमित अभिव्यक्ति के रूप में व्याख्या नहीं करता है।

str = xpath.replace(".", "/*/");

1
यह स्वीकृत उत्तर होना चाहिए, IMO।
एरोन लेहमन

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.