Necesito escribir un método llamado remove() que toma dos argumentos, un String y un char, y devuelve una nueva Cadena que elimina todas las ocurrencias del caracter de la Cadena de entrada. Tengo que hacer esto sin usar el replace() método. Hasta ahora tengo:

public class Remover
{
   public static void main (String[] args)
    {
        String sampleString = "this is some text";
        char sampleChar = 's';
        System.out.print(remove(sampleString, sampleChar));
    }
    public static String remove(String a, char b)
    {
      String newString = "";
        newString = a.substring(0, a.indexOf(b))+""+a.substring(a.indexOf(b)+1);

        return newString;
    }
}

El principal método es sólo para propósitos de prueba y la muestra string y char son sólo ejemplos; necesito que este método de trabajo para cualquier string y char. Pero de cualquier manera, estoy seguro de que lo que tengo es mal y estoy completamente perdido sobre cómo proceder. Para este caso, estoy tratando de conseguir mi código para volver

"thi i ome text"
  • Sí, lo que tenemos es malo. Pensar acerca de lo que realmente estamos tratando de hacer: mirar por encima de todos los caracteres de la cadena, la copia de la que no son los de carácter quitar. Sugerencia: mira StringBuilder y String.charAt.
InformationsquelleAutor crazymouse | 2013-11-27

7 Comentarios

  1. 2
    1. Obtener char matriz de la cadena utilizando string.toCharArray() método.
    2. Atravesar el char matriz. Anexar el char a una Cadena si no es igual a su destino char
    3. Uso StringBuilder clase para anexar: la construcción de la cadena.
    • No sugerir una solución alternativa, tratar de arreglar esto y asesorar a mejorar con su solución.
    • Gracias por la sugerencia. El problema es hacer una operación de este tipo con substring parece bastante menos sentido para mí. 🙂
  2. 1

    Se puede recorrer la Cadena mediante charAt()

    String s = "this is some text";
    
    public static String remove(String a, char b) {
    
        String word = "";
    
        for (int i = 0; i < a.length(); i++){
            if (s.charAt(i) != b){
                word += a.charAt(i);
            }
        }
    
        return word;
    
    }

    Una alternativa a la Cadena de la concatenación es el uso de StringBuilder dentro del bucle

    StringBuilder sb = new StringBuilder();
    
    for (int i = 0; i < a.length(); i++){
        if (s.charAt(i) != b){
            sb.append(s.charAt(i));
        }
    }
    
    return sb.toString();

    Otra forma de abordar esto es para convertir la Cadena en una matriz de char y recorrer la matriz

     StringBuilder sb = new StringBuilder;
    
     for (char c : s.toCharArray()){
         if (c != b) {
             sb.append(c);
         }   
     }
    
     return word;
    • Funciona, y parece bastante simple también. Iteración de que era algo que se ha planteado durante un rato, pero no estaba seguro de cómo iba a implementar.
  3. 0

    No voy a sugerir una alternativa de solución, te voy a contar cómo solucionar el problema en su actual código.

    Su programa sólo funciona para la primera aparición de s. Usted debe hacer lo siguiente:

    1. Dividir el string de acuerdo a " ".
    2. Pasar cada palabra en la matriz a remove método.
    3. Imprimir el resultado en la misma línea con " ".

    Debe tener algo como que:

    String sampleString = "this is some text";
    String[] arr = sampleString.split(" ");
    char sampleChar = 's';
    for(String str : arr) {
        System.out.print(remove(str, sampleChar) + " ");
    }

    Tenga en cuenta que en remove método, usted debe comprobar si la Cadena contiene s, si no, es como lo que es:

    public static String remove(String a, char b) {
       if(!a.contains(b)) {
          return a;
       }
       String newString = "";
       newString = a.substring(0, a.indexOf(b))+""+a.substring(a.indexOf(b)+1);
       return newString;
    }

    Esto debería funcionar.

  4. 0

    Puede utilizar la recursividad como el de abajo. Pero todavía el uso de StringBuilder,que s la mejor manera. Esto es sólo para hacer que el código de trabajo

    public static String remove(String a, char b)
    {
       String newString = "";
       newString = a.substring(0, a.indexOf(b))+""+a.substring(a.indexOf(b)+1);
       if(newString.indexOf(b)!=-1) {
         newString= remove(newString,b);
       }
       return newString;
    }
  5. 0

    Puede convertir la cadena de origen a la matriz de char utilizando a.toCharArray()),

    a continuación, escribir un bucle para comparar el char elemento en la matriz de char, uno por uno, y se espera que sea eliminado char.

    Si no es igual, entonces añadirlo a objeto StringBuilder.

    tener una oportunidad con este;

     public static String remove(String a, char b) {
        /*String newString = "";
        newString = a.substring(0, a.indexOf(b)) + ""
                + a.substring(a.indexOf(b) + 1);
    
        return newString;*/
    
        StringBuilder sb = new StringBuilder();
    
        for(char c: a.toCharArray())
        {
            if(c!= b)
            {
                sb.append(c);
            }
        }
        return sb.toString();
    }
    • Funciona, pero creo que aún tienen que llegar a StringBuilder en cuanto a mi (limitada) de Java experiencia. Voy a estar seguro de tener esto en cuenta en el futuro.
  6. 0
    public class charReplace{
        public static void main(String args[]){
        String sampleString = "This is some text";
        char sampleChar = 's';
        System.out.println(char_remove(sampleString, sampleChar));
    }
    
    public static String char_remove(String a, char b){
        String newString = " ";
        int len = a.length();
        for(int i =0; i<len ;i++)
         {
           char c = a.charAt(i);
           if(c == b)
              newString = newString + " ";
           else
              newString = newString + c ;  
         }
        return newString;
      }
    }
    • Su respuesta debe contener una explicación de su código y una descripción de cómo se resuelve el problema.
  7. 0
     public static String remove(String a, char b)
        {
           StringBuilder sbul =new StringBuilder();
           int i;
            for(i=0;i<a.length();i++){
                  char c = a.charAt(i);
                   if(c==b)
                      continue;
                    sbul.append(c);
                 }
            return sbul.toString();
    }

Dejar respuesta

Please enter your comment!
Please enter your name here