Definicja "znaków Unicode" jest niejasna, ale zostanie przeniesiona do oznacza znaki UTF-8 nie objęte standardem ISO 8859 charset. Jeśli tak jest w twoim przypadku, przeprowadź pętlę przez wszystkie znaki w łańcuchu i przetestuj jego punkt kodowy, aby określić, czy znajduje się on w podanym zestawie znaków.
Można również użyć Map<Character, Character>
i znaków na mapie, które zawierają pasujące klucze. Na przykład:
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();
Czy masz na myśli "wszystkie postacie ze znakami diakrytycznymi"? Jeśli tak, a następnie użyć java.text.Normalizer
usunąć znaki diakrytyczne:
/**
* 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}+", "");
}
Jedna pułapka, U staną U, a nie Y. Nie wiem, czy to właśnie Ty jesteś po. Jeśli chcesz zastąpić wyraźną postacią, naprawdę musisz utworzyć mapowanie. Oczywiście, jest to żmudne dzieło, ale zostało zrobione w krótszym czasie niż było to konieczne.
Skąd wiadomo, na co † będzie mapować bez własnej mapy?Nie ma prostego mapowania i podejrzewam, że w różnych językach każde mapowanie może się różnić – Mark
tak naprawdę można to zrobić, patrząc na znaki jeden po drugim. To zależy od "zasięgu" znaku, ale jest to cichy, niski poziom i zakładam, że istnieje już coś, co pozwoli osiągnąć to zadanie. zobacz http://en.wikipedia.org/wiki/Unicode – Aif
Zobacz również rozwiązanie tutaj: https://rosettacode.org/wiki/Strip_control_codes_and_extended_characters_from_a_string#Java – Stan