Создание запрашиваемых строк - PullRequest
1 голос
/ 09 мая 2011

Я бы хотел хранить строки также в более запрашиваемом слагоподобном формате в базе данных, переводя их в нижний регистр, заменяя акцентированные буквы латинскими (ä -> a, ö -> o, ç -> c и т. д.) и замену других специальных символов, например, черточки. Есть ли стандарт для такого формата? Что было бы предпочтительным средством для достижения этого в Java?

Ответы [ 2 ]

0 голосов
/ 10 мая 2011

Это решение, которое мне показалось наиболее эффективным на данный момент:

return Normalizer
    .normalize(src.trim().toLowerCase(Locale.ENGLISH),
        Normalizer.Form.NFD)
    .replaceAll("\\p{InCombiningDiacriticalMarks}+", "")
    .replaceAll("[^\\p{ASCII}]+", "-")
    .replaceAll("[^a-z0-9]+", "-").replaceAll("(^-|-$)+", "");

Это преобразует: ¿Qué? в очередь, круто !!!! 1 до круто-1 и до а.

0 голосов
/ 09 мая 2011

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

Посмотрите на это для наглядного примера сопоставления:

http://www.collation -charts.org/mysql60/mysql604.utf8_general_ci.european.html

Вот хорошее описание работы сортировок из руководства MySQL:

http://dev.mysql.com/doc/refman/5.0/en/charset-syntax.html

...