jAbLoK

blog už dávno nejen o javě

re: Odháčkování

s jedním komentářem

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);

Written by Pavel Kolesnikov

prosinec 16, 2007 na 11:02 pm

Zasláno do Java

Tagged with ,

Jedna odpověď

Subscribe to comments with RSS.

  1. možno by to šlo aj pomocou staršieho
    http://java.sun.com/j2se/1.5.0/docs/api/java/text/Collator.html
    ale neskúšal som to

    Marian

    červenec 25, 2009 at 1:52 dop.


Zanechat odpověď