C# Рекомендуемый способ выполнения пользовательского кодирования строки
Итак, мой вопрос довольно прост. У меня есть строка, и я хочу иметь возможность использовать ее в URL. Просто, правда? Сложность, однако, в том, что я хочу собственный способ кодирования. Видите ли, мой язык полон é, í, ô, ä, ľ, š, č, ť..., вы поняли.
Итак, допустим, у меня есть такая строка:
Čečenský bojovník sa pobil v košickej väzbe
Если я использую HttpUtility.EncodeUrl, я получаю эту строку:
%c4%8ce%c4%8densk%c3%bd+bojovn%c3%adk+sa+pobil+v+ko%c5%a1ickej+v%c3%a4zbe
Тем не менее, моя желаемая строка будет выглядеть следующим образом (при попытке создать максимально удобные для пользователя URL-адреса):
cecensky-bojovnik-sa-pobil-v-kosickej-vazbe
Использование функции EncodeUrl тогда не вариант. Итак, я написал себе функцию для нескольких манипуляций со строкой, делая именно то, что мне нужно.
public static string EncodeForUrl(this string s)
{
string temp = s.StripDiacritics(); // one custom function
temp = temp.ToLower();
temp = temp.Trim();
temp = temp.Replace(" ", "-");
return temp;
}
Я думаю, что очевидно, что происходит, и это прекрасно работает. Ну, за исключением того факта, что строка неизменна, так что происходит довольно много ненужных выделений памяти.
Итак, наконец, я добрался до своего вопроса - есть ли рекомендуемый, более эффективный способ сделать это?
2 ответа
После некоторого поиска в Google я наконец нашел ответ, который удовлетворил мои потребности. Вероятно, наилучшим образом справляется Stackru.
Как Stack Overflow генерирует свои SEO-дружественные URL-адреса?
и это для снятия диакритики, даже лучше, чем моя текущая версия
Вы можете пропустить ToLower() и вместо Replace() вы можете сделать что-то похожее на это: /questions/43994028/samyij-byistryij-sposob-udalit-probelyi-v-stroke/43994045#43994045