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