1

如何编辑此正则表达式Regex.Replace(encodedUrl, @"[^a-z0-9]", "-");以不删除特殊字符ę,ą,ó,ł,例如等?

这是我的方法。我用它来生成漂亮的 URL,.,#$%@:;在 URL 中没有这些字符。

    public static string ToSeoUrl(this string url)
    {
        // make the url lowercase
        string encodedUrl = (url ?? "").ToLower();

        // replace & with and
        encodedUrl = Regex.Replace(encodedUrl, @"\&+", "and");

        // remove characters
        encodedUrl = encodedUrl.Replace("'", "");

        // remove invalid characters
        encodedUrl = Regex.Replace(encodedUrl, @"[^a-z0-9]", "-");

        // remove duplicates
        encodedUrl = Regex.Replace(encodedUrl, @"-+", "-");

        // trim leading & trailing characters
        encodedUrl = encodedUrl.Trim('-');

        return encodedUrl;
    }

问候

4

2 回答 2

4

您可以将特殊字符添加到字符类:

@"[^a-z0-9ęąół]"

正则表达式基本上匹配任何不是 az、0-9 以及您在 - 之间放置的任何其他字符[]- 这就是^开头的含义。

于 2013-06-06T18:53:24.657 回答
1

尽管这不能直接回答您的问题,但以下去除重音、变音符号等的方法可能会很方便。

    public static String RemoveAccentsAndDiacritics(this String s)
    {
        return string.Join(string.Empty,
                           s
                               .Normalize(NormalizationForm.FormD)
                               .Where(c => 
                                  CharUnicodeInfo.GetUnicodeCategory(c) != 
                                      UnicodeCategory.NonSpacingMark));
    }
于 2013-06-06T18:57:59.783 回答