Removendo acentuações e sinais gráficos de uma String

Por Gaspar Barancelli Junior em 22 de fevereiro de 2023

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

// Livros recomendados relacionados ao assunto do post

// Compartilhe esse Post