Aquí os dejo una función que dado un String con acentos y con letras mayúsculas, devuelve otro String sin acentos y en minúscula.
Esto es muy útil cuando necesitas almacenar datos en una base de datos o presentar cierta información y quieres que todo sea homogéneo, ya que puede darse el caso sobre todo con los acentos y las tildes que a la hora de guardarlos en base de datos o mostrarlos por pantalla estos se muestren con caracteres extraños que no son legibles.
public static String cleanAcentos(String string) { String original = "áàäéèëíìïóòöúùuñÁÀÄÉÈËÍÌÏÓÒÖÚÙÜÑçÇü·':"; String ascii = "aaaeeeiiiooouuunAAAEEEIIIOOOUUUNcCu "; if (string != null) { //Recorro la cadena y remplazo los caracteres originales por aquellos sin acentos for (int i = 0; i < original.length(); i++ ) { string = string.replace(original.charAt(i), ascii.charAt(i)); } //Establezco todos los caracteres a minúscula. string = string.toLowerCase(); } return string; }
Ejemplo:
public class Main { public static void main(String[] args) { String texto1 = "Esto es un texto de PRUEBA con caracteres extraños AÂËçESPAÑA"; //Aplico la función cleanAcentos y la almaceno en otro string String texto2 = cleanAcentos(texto1); //Imprimos los valores por consola para comprobar el resultado. System.out.println("texto1 = " + texto1); System.out.println("texto2 = " + texto2); } public static String cleanAcentos(String string) { String original = "áàäéèëíìïóòöúùuñÁÀÄÉÈËÍÌÏÓÒÖÚÙÜÑçÇü·':"; String ascii = "aaaeeeiiiooouuunAAAEEEIIIOOOUUUNcCu "; if (string != null) { //Recorro la cadena y remplado los caracteres originales por aquellos sin acentos for (int i = 0; i < original.length(); i++ ) { string = string.replace(original.charAt(i), ascii.charAt(i)); } //Establezco todos los caracteres a minuscula. string = string.toLowerCase(); } return string; } }
La salida por consola es:
texto1 = Esto es un texto de PRUEBA con caracteres extraños AÂËçESPAÑA
texto2 = esto es un texto de prueba con caracteres extranos aâecespana