2011-01-01 15 views
249

से चार की सभी घटनाओं निकालें मैं इस का उपयोग कर सकते हैं:स्ट्रिंग

String str = "TextX Xto modifyX"; 
str = str.replace('X','');//that does not work because there is no such character '' 

वहाँ जावा में एक स्ट्रिंग से चरित्र X की सभी घटनाओं को हटाने के लिए कोई तरीका है?

मैं इस कोशिश की और जो मैं चाहता नहीं है: str.replace('X',' '); //replace with space

+3

आप एकल वर्ण स्ट्रिंग्स की जगह की कोशिश की? –

उत्तर

425

उपयोग करने का प्रयास overload that takes CharSequence arguments (जैसे, String) के बजाय char से:

str = str.replace("X", ""); 
+1

पहला तर्क नियमित अभिव्यक्ति है, कभी-कभी यह अपेक्षा के अनुसार काम नहीं करेगा, खासकर यदि यह स्ट्रिंग उपयोगकर्ता इनपुट से आती है। – vbezhenar

+9

@vsb: सच नहीं है। उस विशेष अधिभार के दोनों तर्क 'CharSequence' हैं। http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#replace%28java.lang.CharSequence,%20java.lang.CharSequence%29 – LukeH

+3

आप सही हैं, क्षमा करें। – vbezhenar

34

का उपयोग

public String replaceAll(String regex, String replacement) 

काम करेंगे।

उपयोग str.replace("X", ""); होगा।

निष्पादित

"Xlakjsdf Xxx".replaceAll("X", ""); 

रिटर्न:

lakjsdf xx 
+5

रेगेक्स शायद इसके लिए अधिक है जब तक कि आप जावा 1.4 का समर्थन करने के लिए प्रतिबंधित नहीं हैं - संस्करण 1.5 के बाद से 'प्रतिस्थापन' ओवरलोड होता है जो एक सरल 'CharSequence' लेता है। – LukeH

+0

हाँ, अच्छा बिंदु –

+3

@LukeH, यह String.replace के लिए अपूर्ण स्रोत है। यह regex का उपयोग कर रहा है। मैं मानता हूं कि यह रेगेक्स भारी महसूस करता है, लेकिन ऊपर दिए गए स्वीकृत उत्तर के लिए भी यह हुड के नीचे है। सार्वजनिक स्ट्रिंग प्रतिस्थापन (CharSequence var1, CharSequence var2) { वापसी Pattern.compile (var1.toString(), 16) .matcher (यह)।replaceAll (Matcher.quoteReplacement (var2.toString())); } –

19

आप जावा स्ट्रिंग्स के साथ कुछ करना चाहते हैं , Commons Lang StringUtils देखने के लिए एक शानदार जगह है ।

StringUtils.remove("TextX Xto modifyX", 'X'); 
-3

आप पहले उल्लेख किए गए str = str.replace("X", ""); का उपयोग कर सकते हैं और आप ठीक होंगे। आपकी जानकारी के लिए '' खाली (या मान्य) वर्ण नहीं है लेकिन '\0' है।

तो आप इसके बजाय str = str.replace('X', '\0'); का उपयोग कर सकते हैं।

+9

यह गलत है। '\ 0' एक वास्तविक शून्य चरित्र का उत्पादन करेगा। str.replace ('X', '\ 0') str.replace ("X", "\ u0000") के बराबर है जो ओपी चाहता था – Andrey

7
String test = "09-09-2012"; 
String arr [] = test.split("-"); 
String ans = ""; 

for(String t : arr) 
    ans+=t; 

यह उदाहरण है जहां मैंने चरित्र को हटा दिया है - स्ट्रिंग से।

+3

यह बहुत अक्षम है, विशेष रूप से स्वीकृत उत्तर की तुलना में । –

+2

मुझे लगता है कि यह उत्तर काम करता है, लेकिन सही उत्तर यह छोटा और तेज है – evilReiko

1

हैलो नीचे

public class RemoveCharacter { 

    public static void main(String[] args){ 
     String str = "MXy nameX iXs farXazX"; 
     char x = 'X'; 
     System.out.println(removeChr(str,x)); 
    } 

    public static String removeChr(String str, char x){ 
     StringBuilder strBuilder = new StringBuilder(); 
     char[] rmString = str.toCharArray(); 
     for(int i=0; i<rmString.length; i++){ 
      if(rmString[i] == x){ 

      } else { 
       strBuilder.append(rmString[i]); 
      } 
     } 
     return strBuilder.toString(); 
    } 
} 
+0

यदि आप x की बजाय एक और स्ट्रिंग रखते हैं तो आप यह कैसे करेंगे? अच्छा समाधान! –

2

मैं इस अवसर में रेगुलर एक्सप्रेशन से का उपयोग कर की तरह इस कोड का प्रयास करें:

str = str.replace(/X/g, ''); 

जहां ग्राम वैश्विक इसका मतलब तो यह अपने पूरे स्ट्रिंग के माध्यम से जाने के लिए और '' के साथ सभी एक्स का स्थान ले लेगा ; अगर आप दोनों एक्स और एक्स बदलना चाहते हैं, तो आप बस कहते हैं:

str = str.replace(/X|x/g, ''); 

(मेरी बेला यहाँ देखें: fiddle)

+0

मुझे लगता है कि यह काम कर सकता है, लेकिन सही उत्तर तेजी से और छोटा निष्पादित करता है, जितना संभव हो सके RegEx से बचने के लिए हमेशा बेहतर होता है क्योंकि यह अन्य विधियों की तुलना में धीमी होने के लिए जाना जाता है – evilReiko

+13

यह जावाएसआरआरआईपीटी प्रश्न नहीं है ... – Mindwin

0
package com.acn.demo.action; 

public class RemoveCharFromString { 

    static String input = ""; 
    public static void main(String[] args) { 
     input = "abadbbeb34erterb"; 
     char token = 'b'; 
     removeChar(token); 
    } 

    private static void removeChar(char token) { 
     // TODO Auto-generated method stub 
     System.out.println(input); 
     for (int i=0;i<input.length();i++) { 
      if (input.charAt(i) == token) { 
      input = input.replace(input.charAt(i), ' '); 
       System.out.println("MATCH FOUND"); 
      } 
      input = input.replaceAll(" ", ""); 
      System.out.println(input); 
     } 
    } 
}