SoftEU

Archív: Prosinec 2007

Odháčkování

16. Prosinec 2007 v 18:48

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

Celé to funguje tak, že se znak (např. Á) převede na jeho rozloženou (dekomponovanou) formu (např. A ‘). Znak je tedy převeden na dva znaky. Následně se všechny kombinované diakritické znaky odstraní (háčky, čárky, kroužky, …) pomocí regulárního výrazu. Unicodová tabulka obsahuje téměř pro každý znak i jeho přepis na dekomponovanou formu a tak by uvedené řešení mělo fungovat na většinu jazyků světa.


Switch to our mobile site