Ответ 1
Определение "символов Юникода" является неопределенным, но будет принято обозначать символы UTF-8, которые не охватываются стандартным ISO 8859 charset. Если это верно в вашем случае, то пропустите все символы в String и проверьте его код, чтобы определить, находится ли он в заданном наборе символов.
В качестве альтернативы используйте Map<Character, Character>
и символы на карте, которые содержат совпадение с ключами. Например:
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();
Или, вы имеете в виду "всех персонажей с диакритикой"? Если это так, используйте java.text.Normalizer
для удаления диакритических знаков:
/**
* 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}+", "");
}
Одна ложь, Ü стала бы U, а не Y. Не уверен, что это вам. Если вы хотите заменить выраженным символом, вам действительно нужно создать сопоставление. Конечно, это утомительная работа, но это было сделано за меньшее время, чем вам нужно было следовать этой теме.