2010-08-10 145 views
0

是否有方法或將字符與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

回答

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所得到的字符串進行解碼。

+0

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

+0

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

1

我不知道那些特定的字符代碼,但你也許能夠做一些正則表達式來找到所有的字符代碼,只有將它們轉換。雖然如果字符代碼的長度可能不同,可能很難確保它們不會與字符串中的任何正常數字/數字混淆。

+0

據我所知,他們都只有2個十六進制數字的長度,所以這可能工作我猜,但我堅持要糾正這一點。 – AndrewC 2010-08-10 11:04:41

相關問題