É um método comum, mas sempre estou precisando em algum lugar, logo é melhor deixar aqui para evitar escrever de novo
public class StringUtils {
public static String replaceSpecialCaracter(String specialString) {
if (specialString == null) {
return specialString;
}
char[] special = new char[] { 'ç', 'á', 'à', 'ã', 'â', 'ä', 'é', 'è',
'ê', 'ë', 'í', 'ì', 'î', 'ï', 'ó', 'ò',
'õ', 'ô', 'ö', 'ú', 'ù', 'û', 'ü' };
char[] normal = 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 < special.length; i++) {
specialString = specialString.replace(special[i], normal[i]);
specialString = specialString.replace(Character.toUpperCase(special[i]),
Character.toUpperCase(normal[i]));
}
return specialString;
}
}
Um comentário:
Uma outra implementação, diferente, acho que nem muito melhor e nem muito pior, mas bom pra lembrar...
public static String removeAccents(String text) {
Map accents = new HashMap();
Map replacements = new HashMap();
//Letters with their accented variations
replacements.put("?", "ðÞ");
replacements.put("A", "ÂÀÁÄÃÅ");
replacements.put("C", "Ç");
replacements.put("E", "ÉËÈÊ");
replacements.put("I", "ÏÍÎÌ");
replacements.put("N", "Ñ");
replacements.put("O", "ÖÕÒÔØÓ");
replacements.put("U", "ÚÛÜÙ");
replacements.put("a", "áàâåäã");
replacements.put("ae", "æ");
replacements.put("c", "ç");
replacements.put("e", "ëêèé");
replacements.put("i", "ïìíî");
replacements.put("n", "ñ");
replacements.put("o", "öõøôóò");
replacements.put("ss", "ß");
replacements.put("u", "ûúù");
//Prepare hash
Iterator entries = replacements.entrySet().iterator();
while (entries.hasNext()) {
Map.Entry entry = (Map.Entry) entries.next();
String replacement = (String) entry.getKey();
String toReplace = (String) entry.getValue();
for (int i = 0; i < toReplace.length(); i++) {
accents.put(toReplace.substring(i, i + 1), replacement);
}
}
text = replaceStrings(text, accents);
return text;
}
public static String replaceStrings(String text, Map replacements) {
if (text == null || text.equals("")) return text;
Iterator entries = replacements.entrySet().iterator();
while (entries.hasNext()) {
Map.Entry entry = (Map.Entry) entries.next();
String key = (String) entry.getKey();
String value = (String) entry.getValue();
text = text.replaceAll(key, value);
if (key.matches("%[^%]+%")) {
key = "\\?" + key.replaceAll("%", "").toUpperCase() + "\\??";
text = text.replaceAll(key, value);
}
}
return text;
}
Postar um comentário