2014-01-31 2 views
1

Я ищу способ нормализации списка названий. Заголовок нормализуется для хранения в базе данных в виде сортировки и поиска. «Нормализовать» означает много вещей, таких как преобразование в нижний регистр, удаление символа римского акцента или удаление предшествующих «а», «а» или «а».Что такое эквивалент stringByFoldingWithOptions: locale: на Java?

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

NSString Class Reference - stringByFoldingWithOptions:locale:

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

ответ

2

Вы можете использовать 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

+0

Спасибо! Это похоже на то, что я ищу. Я попробую с этим. – Basuke

+0

@basuke добро пожаловать – PopoFibo

Смежные вопросы