替换字符串中的 Unicode 字符
Replace Unicode Characters in a String
我需要用 'base' 字符替换变音符号(例如 ä、ó 等)。对于大多数字符,此解决方案有效:
StringUtils.stripAccents(tmpStr);
但这漏掉了四个字符:æ、œ、ø 和 ß。
我在这里查看了这个解决方案 Is there a way to get rid of accents and convert a whole string to regular letters?。我认为第一个解决方案会起作用,但它不起作用。
如何将这些字符替换为它们的 'base' 字符(例如,将 æ 替换为 a)。
public static String stripAccents(final String input) {
if (input == null) {
return null;
} final StringBuilder decomposed = new StringBuilder(Normalizer.normalize(input, Normalizer.Form.NFD)); convertRemainingAccentCharacters(decomposed);
// Note that this doesn't correctly remove ligatures...
return STRIP_ACCENTS_PATTERN.matcher(decomposed).replaceAll(EMPTY);
}
它有一条评论说,
// Note that this doesn't correctly remove ligatures...
因此您可能需要手动替换这些实例。
像,
String string = Normalizer.normalize("Tĥïŝ ĩš â fůňķŷ ß æ œ ø Šťŕĭńġ", Normalizer.Form.NFKD);
string = string.replaceAll("\p{M}", "");
string = string.replace("ß", "s");
string = string.replace("ø", "o");
string = string.replace("œ", "o");
string = string.replace("æ", "a");
变音字符到 ASCII 字符的映射
https://docs.oracle.com/cd/E29584_01/webhelp/mdex_basicDev/src/rbdv_chars_mapping.html
我需要用 'base' 字符替换变音符号(例如 ä、ó 等)。对于大多数字符,此解决方案有效:
StringUtils.stripAccents(tmpStr);
但这漏掉了四个字符:æ、œ、ø 和 ß。
我在这里查看了这个解决方案 Is there a way to get rid of accents and convert a whole string to regular letters?。我认为第一个解决方案会起作用,但它不起作用。
如何将这些字符替换为它们的 'base' 字符(例如,将 æ 替换为 a)。
public static String stripAccents(final String input) {
if (input == null) {
return null;
} final StringBuilder decomposed = new StringBuilder(Normalizer.normalize(input, Normalizer.Form.NFD)); convertRemainingAccentCharacters(decomposed);
// Note that this doesn't correctly remove ligatures...
return STRIP_ACCENTS_PATTERN.matcher(decomposed).replaceAll(EMPTY);
}
它有一条评论说,
// Note that this doesn't correctly remove ligatures...
因此您可能需要手动替换这些实例。 像,
String string = Normalizer.normalize("Tĥïŝ ĩš â fůňķŷ ß æ œ ø Šťŕĭńġ", Normalizer.Form.NFKD);
string = string.replaceAll("\p{M}", "");
string = string.replace("ß", "s");
string = string.replace("ø", "o");
string = string.replace("œ", "o");
string = string.replace("æ", "a");
变音字符到 ASCII 字符的映射 https://docs.oracle.com/cd/E29584_01/webhelp/mdex_basicDev/src/rbdv_chars_mapping.html