Мне нужно удалить все символы, которые не могут быть частью URL-адресов, например пробелы, <, > и т.д.
Я получаю данные из базы данных.
Например, если извлеченные данные: Product #number 123!
новая строка должна быть: Номер продукта-123
Должен ли я использовать регулярное выражение? есть ли шаблон регулярных выражений для этого? Благодаря
Легкое регулярное выражение для этого:
string cleaned = Regex.Replace(url, @"[^a-zA-Z0-9]+","-");
cleaned = Regex.Replace(cleaned, @"--+","");
должен сделать свое дело.
Вот пример того, как создать строку, удобную для URL, из "нормальной" строки:
public static string GenerateSlug(string phrase)
{
string str = phrase.ToLower();
str = Regex.Replace(str, @"[^a-z0-9\s-]", ""); // invalid chars
str = Regex.Replace(str, @"\s+", " ").Trim(); // convert multiple spaces into one space
str = str.Substring(0, str.Length <= 45 ? str.Length : 45).Trim(); // cut and trim it
str = Regex.Replace(str, @"\s", "-"); // hyphens
return str;
}
Вам может потребоваться удалить трим-часть, если вы уверены, что всегда хотите получить полную строку.
Чтобы просто выполнить замену специальных символов, таких как "<" вы можете использовать Server.UrlEncode(string s)
. И вы можете сделать обратное с помощью Server.UrlDecode(string s)
.