Что эквивалентно stringByFoldingWithOptions:locale: в Java?

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

В iOS или Mac класс NSString имеет метод stringByFoldingWithOptions:locale: для получения свернутой версии строки.

Справочник по классу NSString — stringByFoldingWithOptions:locale:

В Java класс java.uril.Collator кажется полезным для сравнения, но, похоже, нет способа конвертировать для этой цели.


person Basuke    schedule 31.01.2014    source источник


Ответы (1)


Вы можете использовать java.text.Normalizer, который близок к нормализации Строки в Java. Хотя regex также является мощным способом манипулирования строками любым возможным способом.

Пример удаления акцента:

String accented = "árvíztűrő tükörfúrógép";
String normalized = Normalizer.normalize(accented,  Normalizer.Form.NFD);
normalized = normalized.replaceAll("[^\\p{ASCII}]", "");

System.out.println(normalized);

Вывод:

arvizturo tukorfurogep

Дополнительные пояснения здесь: http://docs.oracle.com/javase/tutorial/i18n/text/normalizerapi.html

person StoopidDonut    schedule 31.01.2014
comment
Спасибо! Кажется, это то, что я ищу. попробую с этим. - person Basuke; 01.02.2014