2016-03-21 240 views
2

我是希臘人。 當我在我的聯繫人中搜索子串"αυλ"時,所有這些聯繫人都匹配:"Παύλος""Παυλίνα","Αυλός"搜索一個字符串的子字符重音不敏感

所以,Android中字母「α」匹配字母「α」和「í」。

有沒有這個功能的API,或者我必須以艱難的方式編碼? 例如:string.replaceAll("ά", "α").replaceAll("έ", "ε").replaceAll(......) 這不是多語言的方法。

回答

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的支持。你可能會想看看使用這些。