Как перевести "Lorem 3 ipsum dolor sit amet" в SEO-дружественную версию "Lorem-3-ipsum-dolor-sit-amet" на Java?

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

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

Если они вводят что-то вроде

Lorem 3 ipsum dolor sit amet

Как я могу создать более SEO-версию этого текста:

Lorem-3-ipsum-dolor-sit-amet

3 ответа

Решение

На практике это на самом деле не так просто, как замена пробелов гипсами. Вы также часто хотели бы сделать все это строчными буквами и нормализовать / заменить диакритические знаки, такие как, ö, è и т. Д., Которые являются недопустимыми символами URL. Единственные допустимые символы перечислены как "Незарезервированные символы" во 2-й таблице этой страницы Википедии.

Вот как может выглядеть такая функция:

public static String prettyURL(String string) {
    return Normalizer.normalize(string.toLowerCase(), Form.NFD)
        .replaceAll("\\p{InCombiningDiacriticalMarks}+", "")
        .replaceAll("[^\\p{Alnum}]+", "-");
}

Это делает в основном следующее:

  • строчная строка
  • убрать объединяющие диакритические знаки (после того, как нормализатор "извлечет" их из действительных символов)
  • заменить не буквенно-цифровые символы дефисами

Смотрите также:

String s = "Lorem 3 ipsum dolor sit amet"
s = s.replaceAll(" ","-");

Поскольку это не позволяет мне комментировать. Я бы сделал:

String s = "Lorem 3 ipsum dolor sit amet"
s = s.replaceAll(" ","_");

Вместо этого используйте символ подчеркивания, потому что это пробел. Прошло много времени с тех пор, как я сделал java, но я знаю, что в.Net есть функция, которая очистит имя файла, чтобы оно было безопасным для файловой системы. Многие общие правила применимы к URL-адресу, поэтому, если вы найдете его в API, стоит взглянуть.

Другие вопросы по тегам