Removendo acentuações e sinais gráficos de uma String
Utilizando expressão regular podemos remover as acentuações e sinais gráficos de uma String em Java.
Em versões do Java 7+ podemos utilizar o atributo InCombiningDiacriticalMarks na expressão regular, onde ira remover somente acentos e gráficos.
public static String removeAccentsAfterJava7(String value) {
String normalizer = Normalizer.normalize(value, Normalizer.Form.NFD);
Pattern pattern = Pattern.compile("\\p{InCombiningDiacriticalMarks}+");
return pattern.matcher(normalizer).replaceAll("");
}
Para versões do Java anteriores a 7, também podemos utilizar expressão regular, mas agora removendo todos caracteres não ASCII.
public static String removeAccentsBeforeJava7(String value) {
String normalizer = Normalizer.normalize(value, Normalizer.Form.NFD);
Pattern pattern = Pattern.compile("[^\\p{ASCII}]");
return pattern.matcher(normalizer).replaceAll("");
}
Por fim, vamos realizar um pequeno teste fazendo uma chamada para os dois métodos citados anteriormente, passando como argumento uma String contendo diversos caracteres com acentuação.
public static void main(String[] args) {
String teste = "ÁÉÍÓÚÃÕÂÊÎÔÛÀÈÌÒÙ";
System.out.println(removeAccentsAfterJava7(teste));
System.out.println(removeAccentsBeforeJava7(teste));
}
Segue o resultado obtido na execução dos dois métodos, removendo com sucesso todos as acentuações dos caracteres.
AEIOUAOAEIOUAEIOU
AEIOUAOAEIOUAEIOU