Java - Comparar Stringa con acentos

 
Vista:

Comparar Stringa con acentos

Publicado por Asran Stark (8 intervenciones) el 24/10/2007 13:59:41
Hola a todos.

Estoy haciendo un programa que necesita comparar strings, así que como hago siempre he tirado del metodo "equals". Cual es mi sorpresa cuando me doy cuenta, por primera vez en 7 años, que este metodo no te reconoce como iguales palabras que contengan acentos, es decir, da como diferentes águila y águila, por ejemplo. ¿Sabeis de algún método existente, de las propias librerias del java, que pueda servirme?

He estado usando el j2sdk 1.4. No sé si cambiandolo por el jdk 1.6 se solucionaría esto.

Gracias.
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

RE:Comparar Stringa con acentos

Publicado por angel (537 intervenciones) el 24/10/2007 14:18:34
Pues no se que decirte, solo que a mi , esto "System.out.println("EQ:"+("águila".equals("águila")));" , me pinta: "EQ:true"

Lo he probado con Eclipse y JDK1.4

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

RE:Comparar Stringa con acentos

Publicado por Asran Stark (8 intervenciones) el 24/10/2007 14:36:59
Entonces quizás el problema esté al leer el String desde el símbolo del sistema.

Estoy usando este método:

String palabra = "";
InputStreamReader input = new InputStreamReader(System.in);
BufferedReader reader = new BufferedReader(input);

palabra = reader.readLine();

Si sabes hacerlo de alguna otra forma, que no requiera librerías ajenas a las que trae el propio jdk 1.6, te lo agradecería.
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

RE:Comparar Stringa con acentos

Publicado por angel (537 intervenciones) el 24/10/2007 15:30:40
Lo siento, pero a mi m lee perfectamente desde la consola una palabra con acento.Probado con Win200, elcipse y jkd1.4
Saca por pantalla lo que lees para saber si es problema de lectura.

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

RE:Comparar Strings con acentos

Publicado por Asran Stark (8 intervenciones) el 25/10/2007 10:18:19
Vale, no es problema de la lectura desde la consola, he probado lo que dices y efectivamente me captura bien los acentos. Donde no me los captura bien es al leer desde el fichero. Tengo un fichero con un listado de palabras y quiero saber si la palabra entrada desde el interprete de comandos está en ese fichero.

Las palabras desde el fichero las leo de esta forma:

private RandomAccessFile lector;
lector= new RandomAccessFile ("a.txt","r");
String stemp = new String();
stemp = lector.readLine();

Es la función readLine() a la que no le molan los acentos. La ú, por ejemplo, la devuelve como ·

¿Alguna solución? He probado con la función readUTF, pero entonces no me funciona el programa. Debe funcionar de otra forma.
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

RE:Comparar Strings con acentos

Publicado por angel (537 intervenciones) el 25/10/2007 10:29:51
¿Como lees del fichero? Yo leo de un fichero txt de esta forma y lee bien los acentos

try {
BufferedReader entrada = new BufferedReader(new FileReader("D:/texto.txt"));
while ((linea=entrada.readLine())!=null) {
System.out.println(linea);
}
}
catch (FileNotFoundException exception) {
System.err.println("no fich");}
catch (IOException e) {System.err.println("no fich lectura");}
}

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

RE:Comparar Strings con acentos

Publicado por Asran Stark (8 intervenciones) el 25/10/2007 10:55:33
Es que eso es para leer archivos de forma sequencial, ¿no? Yo es que necesito hacer uso de la función seek para colocar el puntero de lectura en la posicón del fichero que me vaya bien.
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

RE:Comparar Strings con acentos

Publicado por Asran Stark (8 intervenciones) el 25/10/2007 10:50:32
Vale no perdona, leerlo del archivo teoricamente lo lee bien. Es al sacarlo por pantalla cuando se ve mal.

Si leo "águila" desde un archivo en una clase llamada diccionario y se lo paso al main para que lo imprima por pantalla, lo escribe mal. En cambio, si leo la palabra desde el cmd en el main y la imprimo desde el mismo main, la escribe bien. Es por eso que que he pensado que el fallo estaba al leer del fichero, pero resulta que si en la clase leo "águila", lo paso al main, y digo que imprima System.out.println(aguila_desde_el_fichero.equals("águila")); saca true por pantalla. Pero el muy #@**! no me hace el true a la inversa, cuando le paso a diccionario desde el main lo leido en pantalla para que lo compare con lo leído del fichero.

Como odio estos errores raros que quitan la tira de tiempo...
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

Angel no te rayes mas

Publicado por Asran Stark (8 intervenciones) el 25/10/2007 11:18:32
No es ninún problema de lectura ni nada. Debe ser algún tipo de bug del programa que de verdad me está haciendo flipar.

Para que te hagas una idea, cuando busco en el diccionario una palabra que empieza por c, situo el índice de lectura en la c y voy comprobando una a una a ver si encuentro "cantar", por ejemplo. Esto funciona bien. Pero resulta que su lo que busco es "canción", el indice de lectura, vete a saber por que, en lugar de ponerse en la primera palabra de c la se me pone en la d, y claro, no la encuentra.

Gracias por tu tiempo y a ver como lo soluciono.
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

Me re-re-re-corrijo

Publicado por Asran Stark (8 intervenciones) el 25/10/2007 11:34:48
Finalmente ya tengo clarisimo que el error está al leer los acentos desde el fichero. Estudiaré a fondo la clase RandomAccessFile para ver si encuentro alguna solución. Si no deberé aguantarme y hacerlo con acceso a ficheros secuencial.
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

RE:Me re-re-re-corrijo

Publicado por angel (537 intervenciones) el 25/10/2007 15:51:32
Suerte..........
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