2012-06-21 112 views
0

在我的C#應用​​程序中,我想將字符串轉換爲特殊字符。 我的輸入字符串是「G \ u00f6teborg」,我想輸出爲哥德堡。替換雙槓到單斜槓

我使用下面的代碼,

string name = "G\\u00f6teborg"; 

StringBuilder sb = new StringBuilder(name); 
sb = sb.Replace(@"\\",@"\"); 
string name1 = System.Web.HttpUtility.HtmlDecode(sb.ToString()); 
Console.WriteLine(name1); 

在上面的代碼雙斜槓保持相同,它不替換到單斜線,所以解碼之後我正的輸出爲G \ u00f6teborg。

請幫忙找到解決辦法。 在此先感謝。

+1

你的名字變量只包含一個斜槓 – gabba

回答

1
string name = "G\\u00f6teborg"; 

只是刪除了反斜槓之一:

string name = "G\u00f6teborg"; 

如果你得到了用戶的輸入,那麼你需要做的更多:它不是足以替代一個反斜槓,因爲這是字符不是如何在內部存儲,\uXXXX是代表Unicode代碼點的轉義序列

如果你想用一個Unicode代碼點替換一個用戶輸入轉義序列,你需要解析用戶輸入正確。您可以使用正則表達式爲:

MatchEvaluator replacer = m => ((char) int.Parse(m.Groups[1].Value, NumberStyles.AllowHexSpecifier)).ToString(); 
string result = Regex.Replace(name, @"\\u([a-fA-F0-9]{4})", replacer); 

這每個轉義組(\u跟着四個十六進制數字)匹配,提取十六進制數字,解析它們,並將它們轉換爲一個字符。

+3

@downvoter我糾正了代碼......(和一個評論指出錯誤,而不是隻是downvoting會受到讚賞!) –