Удаление диакритических знаков из строки в Java

Возможный дубликат:
ń ǹ ň ñ ṅ ņ ṇ ṋ ṉ ̈ ɲ ƞ ᶇ ɳ ȵ - ›n или Удалить диакритические знаки из символов Unicode

Как убрать диакритические знаки в строках?

Например, преобразовать все á-> a, č-> c и т. Д., Которые будут работать для всех языков.

Я выполняю полнотекстовый поиск, и мне нужно игнорировать любые диакритические знаки в искомом тексте.

Спасибо


person Pointer Null    schedule 22.05.2012    source источник
comment
Помогает ли это?   -  person keyser    schedule 22.05.2012


Ответы (1)


Используя API уровня 9+, вы можете использовать класс Normalizer, например

String normalized = Normalizer.normalize("âbĉdêéè", Form.NFD)
    .replaceAll("\\p{InCombiningDiacriticalMarks}+", "");

(Связанный с ключами ответ выглядит лучше, он убирает больше дерьма)

Это вернет "abcdeee".

person Jens    schedule 22.05.2012
comment
Спасибо, вот и все! Позор API 9+, но я могу с этим жить. - person Pointer Null; 22.05.2012