Estava procurando algum método em Java que fizesse a ‘normalização’ de uma String. Algo como trocar a letra acentuada pela letra normal.
Achei dois métodos, mas nenhum dos dois funcionou, até que um terceiro funcionou, mas não entendi o porquê. Gostaria
que me explicassem porque os dois não funcionaram e como essa coisa estranha que é o terceiro funciona.
1º modo: Retorna o nome sem alteração alguma
public class Metodo {
public static String normalizar(String nome){
nome = nome.replaceAll("é,è,ê,ë", "e");
nome = nome.replaceAll("á,à,ä,â,ã", "a");
nome = nome.replaceAll("ú,ù,ü,û", "u");
nome = nome.replaceAll("ó,ò,ô,õ,ö", "o");
nome = nome.replaceAll("í,ì,ï,î", "i");
nome = nome.replaceAll("ç", "c");
System.out.println(nome);
return nome;
}
}
2º modo: Funciona assim: Se digito ‘á’, ele retorna ‘?’. Obviamente essa não é a intenção
public class Metodo {
public static String normalizar(String nome){
novoNome = Normalizer.normalize(nome, Normalizer.Form.NFKD);
}
3º modo: Funciona perfeitamente, mas não entendi esse parâmetro do método ‘replaceAll’
import java.text.Normalizer;
public class Metodo {
public static String normalizar(String nome){
return Normalizer.normalize(nome, Normalizer.Form.NFKD).replaceAll("\p{InCombiningDiacriticalMarks}+", "");
}
}
Agradeço a quem puder ajudar.