我是希腊人。
当我使用子字符串"αυλ"
搜索我的联系人时,所有这些联系人都匹配:"Παύλος"
,"Παυλίνα"
,"Αυλός"
。
因此,Android在字母“α”中匹配字母“α”和“ά”。
是否有此功能的API,或者我必须以艰难的方式编写代码?
例如:string.replaceAll("ά", "α").replaceAll("έ", "ε").replaceAll(......)
这不是多语言的方式。
答案 0 :(得分:1)
此link的代码似乎与您想要的一致。
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("");
}
在最新版本的Java中,\p{Script=Greek}
,\p{sc=Greek}
,\p{IsGreek}
和\p{Greek}
添加了一些Unicode支持。您可能想要研究使用它们。