PrettyUrl来自某些字符串,如(Áccent, - ()#$%someText& /)字符

时间:2014-10-01 00:07:00

标签: c# asp.net-mvc pretty-urls

是否有任何现有的ASP.NET MVC库或代码可以将某些字符串转换为一个非常好的URL,就像stackoverflow有问题一样?

有字符串:

  

你好!这是一些奇怪的词汇和乐趣 - / Characters(29)

类似于:

  

您好-有此结果是,一些-怪异口音的字和 - funcky字符-29

1 个答案:

答案 0 :(得分:1)

嗯,已经回答了删除变音符号before

public static string RemoveDiacritics(string text) 
{
    var normalizedString = text.Normalize(NormalizationForm.FormD);
    var stringBuilder = new StringBuilder();

    foreach (var c in normalizedString)
    {
        var unicodeCategory = CharUnicodeInfo.GetUnicodeCategory(c);
        if (unicodeCategory != UnicodeCategory.NonSpacingMark)
        {
            stringBuilder.Append(c);
        }
    }

    return stringBuilder.ToString().Normalize(NormalizationForm.FormC);
}

如果你选择RemoveDiacritics,那么你需要做的只是一些正则表达式替换,用一个破折号替换所有非字母数字字符。

public static string PrettyUrl(string s)
{
    return Regex.Replace(RemoveDiacritics(s), "[^a-zA-Z0-9]+", "-").Trim('-');
}

Fiddle