re: Odháčkování
Cituji Petr Ferschmana:
Snad každý český programátor narazil na problém odstranění diakritiky z textu (tzv. odháčkování). Pro tyto účely jsem si kdysi vytvořil jednoduchou mapovací tabulku pro znaky v kódování ISO-8859-2. Nyní jsem v Javě potřeboval něco podobného a našel jsem lepší řešení:
String decomposed = java.text.Normalizer.normalize(string, Normalizer.Form.NFD); return decomposed.replaceAll("p{InCombiningDiacriticalMarks}+", "");
Pěkný, neznal jsem. Jen si dovolím dvě doplnění:
- java.text.Normalizer přišel až s Javou 6
- pokud ještě šestku nemáte, nemusite spoléhat na mapovací tabulky, ale můžete použít icu4j od IBM (pod proprietární, ale nerestriktivně vypadající open-source licencí). Pak můžete pro změnu psát něco jako:
String rule = "Any-Latin; NFD; [:Nonspacing Mark:] Remove; NFC"; Transliterator tr = Transliterator.getInstance(rule); return tr.transform(src);
zatím bez komentářů