Forma feia, chata e antipática
public String removeAcentos (String string){ string = string.replaceAll("[ÂÀÁÄÃ]","A"); string = string.replaceAll("[âãàáä]","a"); string = string.replaceAll("[ÊÈÉË]","E"); string = string.replaceAll("[êèéë]","e"); string = string.replaceAll("ÎÍÌÏ","I"); string = string.replaceAll("îíìï","i"); string = string.replaceAll("[ÔÕÒÓÖ]","O"); string = string.replaceAll("[ôõòóö]","o"); string = string.replaceAll("[ÛÙÚÜ]","U"); string = string.replaceAll("[ûúùü]","u"); string = string.replaceAll("Ç","C"); string = string.replaceAll("ç","c"); string = string.replaceAll("[ýÿ]","y"); string = string.replaceAll("Ý","Y"); string = string.replaceAll("ñ","n"); string = string.replaceAll("Ñ","N"); return string; }
Forma bonita e elegante
public static String removeAcentos(String string) { if (string != null){ string = Normalizer.normalize(string, Normalizer.Form.NFD); string = string.replaceAll("[^\\p{ASCII}]", ""); } return string; }
PS. Na verdade existem várias formas de fazer isso.
Este comentário foi removido pelo autor.
ResponderExcluirNão é a mesma coisa, o primeiro troca letras com acentos por letras sem acentos, enquanto que o segundo remove a letra, não substituindo por nenhuma outra.
ResponderExcluirClayton, sao dois comandos. O primeiro faz a troca dos caracteres acentuados pelos correspondentes nao acentuados:
ResponderExcluirNormalizer.normalize(string, Normalizer.Form.NFD)
O segundo remove "sujeiras" deixadas no processo:
string.replaceAll("[^\\p{ASCII}]", "");
A segunda opção funciona perfeitamente. Obrigado!
ResponderExcluir