将ASCII十六进制代码转换为“混合”字符串中的字符

问题描述:

是否有方法或将字符与ASCII十六进制代码混合在一起的字符串转换为字符串?将ASCII十六进制代码转换为“混合”字符串中的字符

例如如果我给它输入Hello\x26\x2347\x3bWorld它会返回Hello/World

感谢

+1

为什么要将“\ x26 \ x2347”转换为“/”? – 2010-08-10 10:48:13

+0

我不小心遗漏了\ x3b。抱歉。它变成/然后变成/。或者至少,我认为它确实如此。它变成与这个问题无关。 :) – AndrewC 2010-08-10 11:02:35

+0

这些字符串从哪里来?我很怀疑他们的有效性 - 可变长度代码 – 2010-08-10 11:08:01

快速和肮脏的:

static void Main(string[] args) 
    { 
     Regex regex = new Regex(@"\\x[0-9]{2}"); 
     string s = @"Hello\x26\x2347World"; 
     var matches = regex.Matches(s); 
     foreach(Match match in matches) 
     { 
      s = s.Replace(match.Value, ((char)Convert.ToByte(match.Value.Replace(@"\x", ""), 16)).ToString()); 
     } 
     Console.WriteLine(s); 
     Console.Read(); 
    } 

并使用HttpUtility.HtmlDecode所得到的字符串进行解码。

+0

完美!谢谢。 – AndrewC 2010-08-10 11:26:37

+0

最受欢迎:) – 2010-08-10 11:27:37

我不知道那些特定的字符代码,但你也许能够做一些正则表达式来找到所有的字符代码,只有将它们转换。虽然如果字符代码的长度可能不同,可能很难确保它们不会与字符串中的任何正常数字/数字混淆。

+0

据我所知,他们都只有2个十六进制数字的长度,所以这可能工作我猜,但我坚持要纠正这一点。 – AndrewC 2010-08-10 11:04:41