manipulação de string III

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…