是否有方法或將字符與ASCII十六進制代碼混合在一起的字符串轉換爲字符串?將ASCII十六進制代碼轉換爲「混合」字符串中的字符
例如如果我給它輸入Hello\x26\x2347\x3bWorld
它會返回Hello/World
?
感謝
是否有方法或將字符與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