Friday, November 4, 2005, 8:12:56 PM, you wrote: > On Fri, 4 Nov 2005, Jan Dvořák wrote:
>> mam odstranit diakriticka znamenka ze vsech pismen v retezci, ktera jsou v >> latince. >> Nejen ceska diakritika, ale vsechny mozne akcenty nad pismeny anglicke >> abecedy. >> Verze Javy je 1.5. >> >> Nevite lepsi zpusob nez prevodni tabulku? > Krok cislo 1: pro kazdy znak provest konverzi do normalni formy NFD nebo > NFKD (dekompozici). > Krok cislo 2: ze vznikleho zahodit vsechny znaky s tridou Mn (non-spacing > mark), zbytek by mely byt zakladni (base) znaky. > Tento postup ma nekoli problemu: > - myslim, ze Java neposkytuje konverzi do normalni formy (alespon ne v > core API), nicmene Unicode knihovna od IBM by to poskytovat mela > (nezkousel jsem); test na tridu viz Character.NON_SPACING_MARK a > navazujici > - rozpadnou se i jine znaky nez jen ty s diakritikou, napr. nektere > ligatury - zda se, ze uzitim formy NFD misto NFKD (coz provadi nejprve > kompatibilni dekompozici) by se vetsina takovych dala odstavit; a jelikoz > v zadani se hovori o anglicke abecede, pak staci dekomponovat pouze znaky > z Latin bloku (basic, supplement, ext. A, ext. B a ext. additional) > Vice viz unicode.org. tak, pekne odborne podane, dufal som, ze to ma niekto zmaknute :-) lenze ak tomu dobre rozumiem, cely postup je v zasade zalozeny na kategorizacii znakov, a tuto kategorizaciu si znaky nenesu priamo v sebe. to znamena, ze je nutne tieto informacie ziskavat z nejakej databazy, ergo - prevodnej tabulky... rozumiem tomu spravne? :-) -- Patrik Beno J2EE Software Architect ____________________________________ Cleverlance - The Clever Enterprise Solutions www.cleverlance.com European Business Center Dukelskych hrdinu 34 170 00 Praha 7 Czech Republic Tel.: +420 266 177 166 Mobile: +420 777 929 450 Fax: +420 266 177 155