将ASCII十六进制代码转换为“混合”字符串中的字符
是否有方法或将字符与ASCII十六进制代码混合在一起的字符串转换为字符串?将ASCII十六进制代码转换为“混合”字符串中的字符
例如如果我给它输入Hello\x26\x2347\x3bWorld
它会返回Hello/World
?
感谢
快速和肮脏的:
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
所得到的字符串进行解码。
完美!谢谢。 – AndrewC 2010-08-10 11:26:37
最受欢迎:) – 2010-08-10 11:27:37
我不知道那些特定的字符代码,但你也许能够做一些正则表达式来找到所有的字符代码,只有将它们转换。虽然如果字符代码的长度可能不同,可能很难确保它们不会与字符串中的任何正常数字/数字混淆。
据我所知,他们都只有2个十六进制数字的长度,所以这可能工作我猜,但我坚持要纠正这一点。 – AndrewC 2010-08-10 11:04:41
为什么要将“\ x26 \ x2347”转换为“/”? – 2010-08-10 10:48:13
我不小心遗漏了\ x3b。抱歉。它变成/然后变成/。或者至少,我认为它确实如此。它变成与这个问题无关。 :) – AndrewC 2010-08-10 11:02:35
这些字符串从哪里来?我很怀疑他们的有效性 - 可变长度代码 – 2010-08-10 11:08:01