Java - Quitar signos (puntuación y otros) a string.

 
Vista:
sin imagen de perfil

Quitar signos (puntuación y otros) a string.

Publicado por Diego (1 intervención) el 23/10/2014 17:56:57
Buenos días. Solicito su ayuda pues soy estudiante de ingeniería y curso mi primer curso de programación en Javay estoy algo confundido. La cosa es que tengo que hacer un método que reciba una string "es##taEss$$ssUn--nn%&/naHi&lera/Laaaaarga" y le quite todos los simbolos/signos y que quede como resultado una string como esta: "estaEssssUnnnnaHileraLaaaaarga". Esto es lo que he hecho:

public String QuitarSignos(String hilera1){

for(int letras=0; letras<(hilera1.length()); letras++){
char letrasDeHilera1 = hilera1.charAt(letras);
if((letrasDeHilera1 >= 'A' && letrasDeHilera1 <= 'Z')||(letrasDeHilera1 >= 'a' && letrasDeHilera1 <= 'z')){
String nuevaHilera= "";
nuevaHilera = nuevaHilera + letrasDeHilera1;
hilera1 = nuevaHilera;
}
}
return hilera1;
}

public static void main(String[] args) {
String frase= "es##taEss$$ssUn--nn%&/naHi&lera/Laaaaarga";
ProcesaHilera a= new ProcesaHilera();
a.QuitarSignos(frase);
String hileraSinSignos = a.QuitarSignos(frase);
System.out.println(hileraSinSignos);
}
}

el problema está en que cuando intento copiar nuevaHilera(que es la que tiene la string sin signos/simbolos) a hilera1, lo que me retorna el método es una "e" nada más.

¿Alguna sugerencia? Estoy algo frustrado ya.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 214
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Quitar signos (puntuación y otros) a string.

Publicado por juanki (131 intervenciones) el 23/10/2014 23:00:21
Hola

El problema es que usas la misma variable que recibes como parámetro para ir acumulando las letras, entonces, cuando haces:

1
2
3
4
5
if((letrasDeHilera1 >= 'A' && letrasDeHilera1 <= 'Z')||(letrasDeHilera1 >= 'a' && letrasDeHilera1 <= 'z')){
    String nuevaHilera= ""; // cadena vacía, se crea nueva, vacía, cada vez que entra en el if
    nuevaHilera = nuevaHilera + letrasDeHilera1; // le das una única letra
    hilera1 = nuevaHilera; // y la asignas a la cadena de la cual comparas en el for
}

ahí hilera1 pasa a valer una letra, ya que la asignas a la cadena nuevaHilera que la has creado nueva y le has dado una sola letra, por tanto el for ya no continua.

Para solucionarlo crea una variable nueva en la que ir acumulando las letras, no uses la que recibes como parámetro, e inicializala (vacía) antes de entrar en el for.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar