(转)基于C#的Escape和Unescape实现

public static string Escape(string str)
    {
        if (str == null)
            return String.Empty;

        StringBuilder sb = new StringBuilder();
        int len = str.Length;

        for (int i = 0; i <len; i++)
        {
            char c = str[i];

            //everything other than the optionally escaped chars _must_ be escaped
            if (Char.IsLetterOrDigit(c) || c == '-' || c == '_' || c == '/' || c == '""' || c == '.')
                sb.Append(c);
            else
                sb.Append(Uri.HexEscape(c));
        }

        return sb.ToString();
    }

    public static string UnEscape(string str)
    {
        if (str == null)
            return String.Empty;

        StringBuilder sb = new StringBuilder();
        int len = str.Length;
        int i = 0;
        while (i != len)
        {
            if (Uri.IsHexEncoding(str, i))
                sb.Append(Uri.HexUnescape(str, ref i));
            else
                sb.Append(str[i++]);
        }

        return sb.ToString();
    }

posted on 2008-10-17 17:07  冷月孤峰  阅读(818)  评论(1)    收藏  举报