Как перевести "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, стоит взглянуть.