C#字符串(折磨我一天了)
string A = "\\u4e59\\u70ef";
如何利用A,使用一个方法,得到结果:
"\u4e59\u70ef".
(C#, VS2005)
------解决方案--------------------string   A   =   "\\u4e59\\u70ef"; 
如何利用A,使用一个方法,得到结果: 
"\u4e59\u70ef". 
(C#,   VS2005)
首先感谢大家的回复.
其次谈谈的我看法:
Console.WriteLine(A);   结果是:\\u4e59\\u70ef
string B = "\u4e59\u70ef";
Console.WriteLine(B);   结果是:乙烯
大家可以自己测试一下.
A.Replace(@"\\",@"\")    这个方法是不行的.我想如果经过VS的测试,就知道结果是不行的.
还有Remove(),Replace(),SubString(),利用.NET提供的方法是不行的.小弟我招都想尽了,头都大了,要不怎么折磨我一天呢.
最后,提出我的方法,经过VS测试,是OK的:
           string _t7 = "\\u4e59\\u70ef";
           string _t8 = "\u4e59\u70ef";
           string _t9 = "";
           _t9 = _t7.Replace("\\u", "");
           Console.WriteLine(_t9.Length);
           string _t10 = CodingToCharacter(_t9);
           Console.WriteLine(_t7);
           Console.WriteLine(_t8);
           Console.WriteLine(_t9);
           Console.WriteLine(_t10);
           Console.ReadLine();
以上代码是MAIN()函数里的.而CodingToCharacter()方法则定义如下:
public static string CodingToCharacter(string coding)
       {
           string characters = "";
           if (coding.Length % 4 != 0)//编码为16进制,必须为4的倍数。  
           {
               throw new 
System.Exception("编码格式不正确");
           }
           for (int i = 0; i < coding.Length; i += 4)   //每四位为一个汉字  
           {
               byte[] bytes = new byte[2];
               string highCode = coding.Substring(i, 2);   //取出低字节,并以16进制进制转换  
               string lowCode = coding.Substring(i + 2, 2);   //取出高字节,并以16进制进行转换  
               bytes[1] = System.Convert.ToByte(highCode, 16);
               bytes[0] = System.Convert.ToByte(lowCode, 16);
               string character = System.Text.Encoding.Unicode.GetString(bytes);
               characters += character;
           }
           return characters;
       }
OK,成功.大家可以粘贴完了测试一下,谢谢
------解决方案--------------------C# code
static void Main(string[] args)
{
    string A = "\\u4e59\\u70ef";
    Console.WriteLine(A);
    string B = A.Replace(@"\\", @"\");
    Console.WriteLine(B);
    string R =string.Empty;
    string[] splits = A.Split(new string[] { "\\u" }, StringSplitOptions.RemoveEmptyEntries);
    foreach (string var in splits)
    {
        if (var != "\\u")
        {
            R += char.ConvertFromUtf32(int.Parse(var, System.Globalization.NumberStyles.HexNumber));
        }
    }
    Console.WriteLine(R);
    Console.ReadLine();
}
------解决方案--------------------
string   A   =   "\\u4e59\\u70ef"; 
----------------------- 
                 这里字符串其实就是\u4e59\u70ef
Console.WriteLine(A);     //输出:\u4e59\u70ef
string   B   =   A.Replace(@"\\",   @"\");
------------------------------------
                这一句其实什么都没替换,因为A里根本没有\\
Console.WriteLine(B);     //输出:\u4e59\u70ef  
你要把\u4e59\u70ef输出成“乙烯”,恐怕只靠转义是不行的,你看看Converter、Encoding下有什么方法,我觉得出路应该在这里,或者你把\u4e59\u70ef先转换成相应的byte数组,再进行其他转换。