Unicode转换成汉字的C#解码代码《转》

rt 根据所具有的Unicode编码用C#语言把它转换成汉字的代码

师傅的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public static string UnicodeToGB(string text)
        {
            System.Text.RegularExpressions.MatchCollection mc = System.Text.RegularExpressions.Regex.Matches(text, "\\\\u([\\w]{4})");
            if (mc != null && mc.Count > 0)
            {
                foreach (System.Text.RegularExpressions.Match m2 in mc)
                {
                    string v = m2.Value;
                    string word = v.Substring(2);
                    byte[] codes = new byte[2];
                    int code = Convert.ToInt32(word.Substring(0, 2), 16);
                    int code2 = Convert.ToInt32(word.Substring(2), 16);
                    codes[0] = (byte)code2;
                    codes[1] = (byte)code;
                    text = text.Replace(v, Encoding.Unicode.GetString(codes));
                }
            }
            else
            {
 
            }
            return text;
        }

  这是以foreach来处理每个正则表达式的值并且连接起来代码

 

我根据师傅的代码修改的代码,虽然简短了点但是运用的确实for循环

1
2
3
4
5
6
7
8
9
10
11
12
public static string unicodetogb(string text)
{
    System.Text.RegularExpressions.MatchCollection mc = System.Text.RegularExpressions.Regex.Matches(text, "\\\\u([\\w]{4})");
    string a = text.Replace("\\u", "");
    char[] arr = new char[mc.Count];
    for (int i = 0; i < arr.Length; i++)
    {
        arr[i] = (char)Convert.ToInt32(a.Substring(i * 4, 4), 16);
    }
    string c = new string(arr);
    return c;
}

  其中 mc是通过以迭代方式将正则表达式模式应用于输入字符串所找到的成功匹配的集合,它具有count属性。我是把整个Unicode代码转换成没有\u的字符串然后对其进行处理的方法。

posted @ 2013-07-19 11:26  cclient  阅读(195)  评论(0编辑  收藏  举报