2011-01-01 18 views
249

posso usare questo:Rimuovere tutte le occorrenze di carattere dalla stringa

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

C'è un modo per rimuovere tutte le occorrenze di carattere X da una stringa in Java?

Ho provato questo e non è quello che voglio: str.replace('X',' '); //replace with space

+3

Avete provato a sostituire le stringhe di caratteri singoli? –

risposta

425

Provare a utilizzare il overload that takes CharSequence arguments (ad esempio, String) piuttosto che char:

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

Il primo argomento è espressione regolare, a volte non funziona come previsto, soprattutto se questa stringa proviene da input dell'utente. – vbezhenar

+9

@vsb: non vero. Entrambi gli argomenti di quel particolare sovraccarico sono 'CharSequence'. http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#replace%28java.lang.CharSequence,%20java.lang.CharSequence%29 – LukeH

+3

Hai ragione, mi dispiace. – vbezhenar

34

Utilizzando

public String replaceAll(String regex, String replacement) 

funzionerà.

L'utilizzo sarebbe str.replace("X", "");.

Esecuzione

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

rendimenti:

lakjsdf xx 
+5

Regex è probabilmente eccessivo per questo a meno che tu non sia limitato a supportare Java 1.4: dalla versione 1.5 c'è un overload 'replace' che richiede un semplice' CharSequence'. – LukeH

+0

sì, buon punto –

+3

@LukeH, questa è l'origine decompilata di String.replace. Sta usando regex. Sono d'accordo sul fatto che la regex sia pesante, ma questo è ciò che è sotto il cofano anche per la risposta accettata sopra. public String replace (CharSequence var1, CharSequence var2) { return Pattern.compile (var1.toString(), 16) .matcher (this).replaceAll (Matcher.quoteReplacement (var2.toString())); } –

19

Se si vuole fare qualcosa con Java Strings , Commons Lang StringUtils è un ottimo posto dove guardare .

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

È possibile utilizzare str = str.replace("X", ""); come indicato in precedenza e si andrà bene. Per vostra informazione '' non è un carattere vuoto (o valido) ma lo è '\0'.

Quindi è possibile utilizzare str = str.replace('X', '\0');.

+9

non è corretto. '\ 0' produrrà un carattere null effettivo. str.replace ('X', '\ 0') è equivalente a str.replace ("X", "\ u0000") che non è affatto quello che l'OP voleva – Andrey

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

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

Questo è l'esempio di dove ho rimosso il carattere, dalla stringa.

+3

Questo è molto inefficiente, soprattutto rispetto alla risposta accettata . –

+2

Penso che questa risposta funzioni, ma la risposta corretta è più breve e più veloce – evilReiko

1

Ciao Prova questo codice qui sotto

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

come faresti se invece di x avessimo un'altra stringa? Bella soluzione! –

2

Mi piace usare RegEx in questa occasione:

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

dove g significa globale in modo che passerà attraverso la vostra intera stringa e sostituire tutte le X con '' ; se si desidera sostituire entrambi X e X, si dice semplicemente:

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

(vedi mio violino qui: fiddle)

+0

Immagino che questo potrebbe funzionare, ma la risposta corretta viene eseguita più velocemente e più breve, è sempre meglio evitare RegEx il più possibile dato che è noto per essere più lento di altri metodi – evilReiko

+13

Questa non è una domanda JavaSCRIPT ... – 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); 
     } 
    } 
} 
Problemi correlati