2016-05-07 5 views
0

Я пытаюсь найти способ сравнить две строки без учета их буквенных акцентов и футляра.Сравнение строк Java - игнорировать буквенные акценты и случай

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

Так, например, "COTE D'IVOIRE" = "Côte d'Ivoire" будет правдой.

Я знаю, что Java имеет встроенный .equalsIgnoreCase, но как я могу сравнить акценты, игнорируя акценты и регистр?

+3

http://stackoverflow.com/questions/2373213/java-ignore-accents-when-comparing-strings –

ответ

0

Вы можете в первый раз вывести все акценты с помощью Normalizer (см. this question), а затем сравнить игнорирующее дело.

EDIT - или, как @lbarros пользователь указал вне, Collator будет работать еще лучше

+0

На самом деле я думаю, что класс Normalizer работал бы лучше, как указано в этом вопросе: http://stackoverflow.com/questions/2397804/java-string-searching-ignoring-accents, поскольку Collator лучше сортировать, а не сравнивать равенство. – Kingamere

+1

@ Кингамер - сравнение - это надмножество равенства, но в любом случае один из них должен работать на вас – radai