2011-01-01 19 views
249

puedo usar esto:Eliminar todas las ocurrencias de carbón de cadena

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

¿Hay una manera de quitar todas las apariciones de carácter X partir de una cadena en Java?

He intentado esto y no es lo que quiero: str.replace('X',' '); //replace with space

+3

¿Ha intentado reemplazar cadenas de caracteres individuales? –

Respuesta

425

Trate de usar el overload that takes CharSequence arguments (por ejemplo, String) en lugar de char:

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

El primer argumento es la expresión regular, a veces no funciona como se espera, especialmente si esta cadena proviene de la entrada del usuario. – vbezhenar

+9

@vsb: No es cierto. Ambos argumentos de esa sobrecarga particular son 'CharSequence'. http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#replace%28java.lang.CharSequence,%20java.lang.CharSequence%29 – LukeH

+3

Tienes razón, lo siento. – vbezhenar

34

Usando

public String replaceAll(String regex, String replacement) 

va a funcionar.

El uso sería str.replace("X", "");.

Ejecutora

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

devuelve:

lakjsdf xx 
+5

Regex es probablemente demasiado para esto a menos que esté restringido a soportar Java 1.4 - desde la versión 1.5 hay una sobrecarga 'replace' que toma una simple' CharSequence'. – LukeH

+0

sí, buen punto –

+3

@LukeH, esta es la fuente descompilada de String.replace. Está usando regex. Estoy de acuerdo en que regex se siente pesado, pero eso es lo que está bajo el capó, incluso para la respuesta aceptada anteriormente. public String replace (CharSequence var1, CharSequence var2) { return Pattern.compile (var1.toString(), 16) .matcher (this).replaceAll (Matcher.quoteReplacement (var2.toString())); } –

19

Si queremos hacer algo con Java Cuerdas , Commons Lang StringUtils es un excelente lugar para buscar .

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

Puede usar str = str.replace("X", ""); como se mencionó anteriormente y estará bien. Para su información, '' no es un carácter vacío (o válido), sino '\0'.

Así que podría usar str = str.replace('X', '\0'); en su lugar.

+9

esto es incorrecto. '\ 0' producirá un carácter nulo real. str.replace ('X', '\ 0') es equivalente a str.replace ("X", "\ u0000") que no es lo que el OP quería – Andrey

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

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

Este es el ejemplo de donde eliminé el carácter - de la Cadena.

+3

Esto es muy ineficiente, especialmente en comparación con la respuesta aceptada . –

+2

Creo que esta respuesta funciona, pero la respuesta correcta es más corta y más rápida – evilReiko

1

Hola Prueba este código de abajo

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

¿cómo harías esto si en lugar de x tuviéramos otra cadena? Buena solución! –

2

me gusta usar expresiones regulares en esta ocasión:

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

donde g significa mundial por lo que pasará a través de toda la cadena y vuelva a colocar todos los X con '' ; si desea reemplazar ambos X y X, simplemente dicen:

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

(ver mi violín aquí: fiddle)

+0

Supongo que esto podría funcionar, pero la respuesta correcta se ejecuta más rápido y más corto, siempre es mejor evitar RegEx tanto como sea posible, ya que se sabe que es más lento que otros métodos – evilReiko

+13

Esto no es una pregunta de 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); 
     } 
    } 
} 
Cuestiones relacionadas