la definición de "caracteres Unicode" es vaga, pero será llevado a significa caracteres UTF-8 no cubiertos por la norma ISO 8859 charset. Si esto es cierto en su caso, recorra todos los caracteres en la Cadena y pruebe su punto de código para determinar si está dentro del conjunto de caracteres dado.
Como alternativa, utilice un Map<Character, Character>
y los caracteres en el mapa que contienen coinciden con las claves. Por ejemplo:
Map<Character, Character> charReplacementMap = new HashMap<Character, Character>() {{
put('Ü', 'Y');
// Put more here.
}};
String originalString = "AÜAÜ";
StringBuilder builder = new StringBuilder();
for (char currentChar : originalString.toCharArray()) {
Character replacementChar = charReplacementMap.get(currentChar);
builder.append(replacementChar != null ? replacementChar : currentChar);
}
String newString = builder.toString();
O, ¿te refieres a "todos los caracteres con signos diacríticos"? Si es así, a continuación, utilizar java.text.Normalizer
para eliminar los signos diacríticos:
/**
* Remove any diacritical marks (accents like ç, ñ, é, etc) from
* the given string (so that it returns plain c, n, e, etc).
* @param string The string to remove diacritical marks from.
* @return The string with removed diacritical marks, if any.
*/
public static String removeDiacriticalMarks(String string) {
return Normalizer.normalize(string, Form.NFD)
.replaceAll("\\p{InCombiningDiacriticalMarks}+", "");
}
Una trampa, Ü se convertiría en U, no Y. No estoy seguro si eso es lo que está buscando. Si desea reemplazar por carácter pronunciado, realmente necesitará crear un mapeo. Claro, es un trabajo tedioso, pero se hace en menos tiempo de lo necesario para seguir este tema.
¿Cómo sabes lo que va a asignar sin su propio mapa?No existe un mapeo simple y sospecho que en diferentes idiomas cualquier mapeo puede diferir – Mark
en realidad puede hacerlo mirando los caracteres uno por uno. Depende del "rango" de la char, pero es bajo y silencioso, y supongo que ya existe algo para lograr esta tarea. ver http://en.wikipedia.org/wiki/Unicode – Aif
También vea la solución aquí: https://rosettacode.org/wiki/Strip_control_codes_and_extended_characters_from_a_string#Java – Stan