como posso fazer uma função rápida para tirar acentos?
Bom dia,
Não pesquisei muito para você, mas achei dois códigos, veja se serve para seu caso:
[code]private static final char[] FIRST_CHAR =
(" !’#$%&’()*+\-./0123456789:;<->?@ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+ “[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ E ,f’.++^%S<O Z ‘’’’.-”
+ “-~Ts>o ZY !C#$Y|$’(a<–(_o+23’u .,1o>113?AAAAAAACEEEEIIIIDNOO”
+ “OOOXOUUUUyTsaaaaaaaceeeeiiiidnooooo/ouuuuyty”)
.toCharArray();
private static final char[] SECOND_CHAR =
(" ’ , "
+ "\ $ r’. + o E ‘’ "
+ " M e # = ‘C.< R .-… …>424 E E "
+ " E E hs e e h e e h ")
.toCharArray();
/**
* Efetua as seguintes normalizações:
* - Elimina acentos e cedilhas dos nomes;
* - Converte aspas duplas em simples;
* - Converte algumas letras estrangeiras para seus equivalentes ASCII
* (como ß = eszet, convertido para ss)
* - Põe um “” antes de vírgulas, permitindo nomes como
* “Verisign, Corp.” e de “”, permitindo nomes como " a \ b ";
* - Converte os sinais de = para -
* - Alguns caracteres são removidos:
* -> os superiores a 255,
* mesmo que possam ser representados por letras latinas normais
* (como S, = U+015E = Latin Capital Letter S With Cedilla);
* -> os caracteres de controle (exceto tab, que é trocado por um espaço)
* @param str A string a normalizar.
* @return A string normalizada.
*/
public static String normalize(String str) {
char[] chars = str.toCharArray();
StringBuffer ret = new StringBuffer(chars.length * 2);
for (int i = 0; i < chars.length; ++i) {
char aChar = chars[i];
if (aChar == ’ ’ || aChar == ‘\t’) {
ret.append(’ '); // convertido para espaço
} else if (aChar > ’ ’ && aChar < ‘\u0100’) {
if (FIRST_CHAR[aChar - ’ '] != ’ ') {
ret.append(FIRST_CHAR[aChar - ’ '] ) ; // 1 caracter
}
if (SECOND_CHAR[aChar - ’ '] != ’ ') {
ret.append(SECOND_CHAR[aChar - ’ '] ) ; // 2 caracteres
}
}
}
return ret.toString();
}
[/code]ou
[code]public static String trocaAcentuacao(String acentuada) {
if (nulaOuVazia(acentuada)) {
return acentuada;
}
char[] acentuados = new char[] { ‘ç’, ‘á’, ‘à’, ‘ã’, ‘â’, ‘ä’, ‘é’, ‘è’, ‘ê’, ‘ë’, ‘í’, ‘ì’, ‘î’, ‘ï’, ‘ó’, ‘ò’, ‘õ’, ‘ô’, ‘ö’, ‘ú’, ‘ù’, ‘û’, ‘ü’ };
char[] naoAcentuados = new char[] { 'c', 'a', 'a', 'a', 'a', 'a', 'e', 'e', 'e', 'e', 'i', 'i', 'i', 'i', 'o', 'o', 'o', 'o', 'o', 'u', 'u', 'u', 'u' };
for (int i = 0; i < acentuados.length; i++) {
acentuada = acentuada.replace(acentuados[i], naoAcentuados[i] );
acentuada = acentuada.replace(Character.toUpperCase(acentuados[i] ), Character.toUpperCase(naoAcentuados[i] ) );
}
return acentuada;
} [/code]
Vou pesquisar mais se a Apache já tem algo pronto, deixando tudo UTF-8.
Abraços.
Pode dar uma olhada no projeto Apache Commons, veja se isso ajuda também:
http://commons.apache.org/lang/api/org/apache/commons/lang/StringEscapeUtils.html
Abraços!
Muito obrigado
Abraços…