2016-03-21 19 views
2

Yunanca. "αυλ" altyazısıyla Kişilerim'de arama yaptığımda, bu kişilerin tümü eşleşiyor: "Παύλος", "Παυλίνα", "Αυλός".Bir alt dizgi aksama duyarsız için bir dize arama

Yani Android, "α" ve "ά" harflerinin her ikisine de "α" harfi ile eşleşiyor.

Bu özellik için bir API var mı, yoksa bunu zor yoldan kodlamalı mıyım? Çok dilli bir yaklaşım olmayan e.g .: string.replaceAll("ά", "α").replaceAll("έ", "ε").replaceAll(......) .

cevap

1

Bu link'dan gelen kod, istediklerinizin çizgileri boyunca görünüyor. Java'nın son sürümlerinde

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(""); 
} 

, bazı Unicode desteği \p{Script=Greek}, \p{sc=Greek}, \p{IsGreek} ve \p{Greek} ile eklenmiştir. Bunları kullanmayı düşünmek isteyeceksiniz.

İlgili konular