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

时间:2010-08-10 10:46:44

标签: c#

是否有方法或方法将包含混合字符和ASCII十六进制代码的字符串转换为仅包含字符的字符串?

e.g。如果我给它输入Hello\x26\x2347\x3bWorld,它将返回Hello/World

由于

2 个答案:

答案 0 :(得分:3)

又快又脏:

    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解码生成的字符串。

答案 1 :(得分:1)

我不确定那些特定的字符代码,但您可以使用某种正则表达式来查找所有字符代码并仅转换它们。虽然如果字符代码的长度不同,可能很难确保它们不会与字符串中的任何正常数字/数字混淆。