如何将字符串格式化为URL的一部分?

时间:2009-07-24 10:30:57

标签: c# asp.net

我需要删除所有不能成为网址一部分的字符,例如空格,<,>等等。

我从数据库中获取数据 例如,如果检索到的数据是:Product #number 123!

新字符串应为:Product-number-123

我应该使用正则表达式吗?那有正则表达式吗? 感谢

3 个答案:

答案 0 :(得分:2)

以下是如何从“普通”字符串生成符合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;
}

如果您确定始终需要完整的字符串,则可能需要删除剪裁部分。

Source

答案 1 :(得分:1)

只需执行“&lt;”等特殊字符的替换你可以使用Server.UrlEncode(string s)。您可以使用Server.UrlDecode(string s)执行相反的操作。

答案 2 :(得分:1)

执行此操作的简单正则表达式是:

string cleaned = Regex.Replace(url, @"[^a-zA-Z0-9]+","-");