2012-12-09 15 views
7

में सभी प्रश्नचिह्न ("?") को "\?" से प्रतिस्थापित करना संभव है ?सभी को बदलें "?" साथ में "\?" जावा

चलें कहते हैं कि मैं एक स्ट्रिंग है, और मुझे लगता है कि स्ट्रिंग के कुछ भागों, उस में एक यूआरएल के साथ एक हिस्सा हटाना चाहते हैं। इस तरह:

String longstring = "..."; //This is the long String 
String replacestring = "http://test.com/awesomeness.asp?page=27"; 
longstring.replaceAll(replacestring, ""); 

लेकिन! जैसा कि मैं इसे समझता हूं आप एक स्ट्रिंग के साथ replaceAll() विधि का उपयोग नहीं कर सकते जिसमें एक एकल प्रश्न चिह्न है, आपको उन्हें "\?" प्रथम।

तो सवाल यह है; क्या प्रश्नों को "\?" से प्रतिस्थापित करने का कोई तरीका है एक स्ट्रिंग में? और नहीं, मैं सिर्फ स्ट्रिंग को बदलने में सक्षम हूं।

अग्रिम धन्यवाद, आशा है कि कोई मुझे समझता है! (क्षमा के लिए बुरा अंग्रेजी ...)

उत्तर

15

replaceAll() का उपयोग न करें, replace() का उपयोग करें!

यह एक आम धारणा है कि replaceAll()सभी घटनाओं बदल देता है और replace() सिर्फ एक या कुछ बदल देता है। यह पूरी तरह गलत है।

replaceAll() खराब नाम दिया गया है - यह वास्तव में regex को प्रतिस्थापित करता है।
replace() सरल स्ट्रिंग्स को प्रतिस्थापित करता है, जो आप चाहते हैं।

दोनों विधियां सभी लक्ष्य की घटनाओं को प्रतिस्थापित करती हैं।

बस इस कार्य करें:

longstring = longstring.replace(replacestring, ""); 

और यह सब कार्य नहीं करेगा।

+3

+1। –

5
\ भी भागने

, \\\\? का उपयोग कर।

String longstring = "..."; //This is the long String 
String replacestring = "http://test.com/awesomeness.asp?page=27"; 
longstring=longstring.replaceAll(replacestring, "\\\\?"); 

लेकिन के रूप में अन्य जवाब का उल्लेख किया है, replaceAll थोड़ा overkill है, बस एक replace काम करना चाहिए।

+0

यह वास्तव में काम करता है, लेकिन इसके बजाय "\\\?" तुम्हारे पास होना चाहिए "\\\\?"। लेकिन बोहेमियन और अन्य लोगों ने कहा; मैं इसके बजाय प्रतिस्थापन() का उपयोग करूंगा। फिर भी धन्यवाद! – GuiceU

+0

आह। फिक्स्ड कि, धन्यवाद। 'सामान्य गलत धारणा' भाग के लिए – PearsonArtPhoto

2

replaceAll नियमित अभिव्यक्ति लेता है, और ? रेगेक्स दुनिया में एक विशेष अर्थ है।

इस मामले में आपको replace का उपयोग करना चाहिए, जब से तुम एक regex जरूरत नहीं है।

String longstring = "..."; //This is the long String 
String replacestring = "http://test.com/awesomeness.asp?page=27"; 
longstring = longstring.replace(replacestring, ""); 

ओह, और तार अपरिवर्तनीय हैं !! longstring = longstring.replace(..), असाइनमेंट पर ध्यान दें।

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