“unicode 字符”的定义含糊不清,但将被视为标准 ISO 8859 charset 未涵盖的 UTF-8 字符。如果在您的情况下是这样,则遍历字符串中的所有字符并测试其代码点以确定它是否在给定字符集中。
或者,使用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。不确定这是否是您所追求的。如果你想用发音字符替换,你真的需要创建一个映射。当然,这是一项乏味的工作,但完成的时间比您学习本主题所需的时间要短。