2014-08-29 9 views
7

मैं एक बड़ी स्ट्रिंग जिसमें मैं & निम्नलिखित पैटर्न में उपलब्ध इस्तेमाल किया वर्ण हो है -जावा स्ट्रिंग & के साथ '&' बदलें, लेकिन & से & amp;

A&B 
A & B 
A& B 
A &B 
A&B 
A & B 
A& B 
A &B 

मैं हालांकि यह जगह & को & चरित्र की सभी घटनाओं को बदलना चाहते हैं, मैं यह भी कहा कि यह सुनिश्चित करने की जरूरत है मैं गलती से & को & में परिवर्तित नहीं करता हूं। मैं इसे निष्पादन समझदार तरीके से कैसे करूं? क्या मैं नियमित अभिव्यक्ति का उपयोग करता हूं? यदि हां, तो क्या आप उपर्युक्त करने के लिए सही नियमित अभिव्यक्ति लेने के लिए मेरी मदद कर सकते हैं?

मैं अब तक कोई खुशी के साथ निम्नलिखित की कोशिश की है:

data = data.replace(" & ", "&"); // doesn't replace all & 
data = data.replace("&", "&"); // replaces all &, so & becomes & 
+3

आप सभी '&' '' 'में बदल सकते हैं और फिर सभी' '' '&' को बदल सकते हैं। –

+0

क्या आपके पास उदाहरण के लिए '  'जैसे अन्य भागने वाले अक्षर हैं? – Pshemo

उत्तर

27

आप एक नकारात्मक अग्रदर्शी साथ रेगुलर एक्सप्रेशन का उपयोग कर सकते हैं।

रेगेक्स स्ट्रिंग &(?!amp;) होगी।

replaceAll का उपयोग करना, आप मिल जाएगा:

A&B 
A & B 
A& B 
A &B 
A&B 
A & B 
A& B 
A &B 

तो एक भी स्ट्रिंग str के लिए कोड होगा:

str.replaceAll("&(?!amp;)", "&"); 
+0

बहुत बहुत धन्यवाद। यह एक सम्मोहन की तरह काम करता है! – sribasu

+0

निश्चित रूप से, कोई समस्या नहीं है। – khampson

2

आप इस कोशिश कर सकते हैं, यह काम करना चाहिए:

data = data.replaceAll("&","&").replaceAll("&","&"); 

इस तरह आप पहले के साथ सभी & को प्रतिस्थापित करते हैं तो आपके पास & होगा, और फिर, आप सभी को & से प्रतिस्थापित करें।

+0

यह अधिक सुरक्षित विकल्प है, धन्यवाद – Bikram

+0

अच्छा विचार, धन्यवाद –

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