一尘不染

Java将符号,重音字母转换为英文字母

java

问题是,正如您所知道的,Unicode图表中有成千上万个字符,我想将所有类似的字符转换为英文字母。

例如,这里有一些转换:

ҥ->H
Ѷ->V
Ȳ->Y
Ǭ->O
Ƈ->C
tђє Ŧค๓เℓy --> the Family
...

我发现字母A / a有20多个版本。而且我不知道如何对它们进行分类。它们看起来像大海捞针。

Unicode字符的完整列表位于http://www.ssec.wisc.edu/~tomw/java/unicode.html 或http://unicode.org/charts/charindex.html。只需向下滚动并查看字母的变体即可。

如何用Java转换所有这些?请帮我 :(


阅读 751

收藏
2020-03-07

共1个答案

一尘不染

此方法在Java中效果很好(纯粹是为了消除变音符号,也就是重音符号)。

它基本上将所有带有重音符号的字符转换为它们的不带重音字符的字符,然后将它们合并为变音符号。现在,你可以使用正则表达式删除变音符号。

import java.text.Normalizer;
import java.util.regex.Pattern;

public String deAccent(String str) {
    String nfdNormalizedString = Normalizer.normalize(str, Normalizer.Form.NFD); 
    Pattern pattern = Pattern.compile("\\p{InCombiningDiacriticalMarks}+");
    return pattern.matcher(nfdNormalizedString).replaceAll("");
}
2020-03-07