2012-09-06 58 views
0

我有一個字符串,如"[email protected]@[email protected]@"解碼C中的字符串#

原始字符串"Akzo Nobel N.V."

我需要對它進行解碼。我有這樣的嘗試

public static string Decode(string query) 
{ 
    string dSData = HttpUtility.UrlDecode(query.ToString()); 
    return dSData; 
} 

我無法將其解碼爲原始字符串。請幫我解碼它。

+2

而你如何得到這個編碼的字符串? –

+2

這是如何編碼的? –

+0

你需要找出確切的編碼類型 - 字符串來自哪裏,誰編碼它? – Treb

回答

1
public static String Decode(String query) { 
    return query.Replace("_", " ").Replace("@[email protected]", "."); 
} 

更多的輸入將提供更好的解碼程序。

+0

這是基於這些是OP必須處理的唯一兩個替代品的假設。 +1雖然,我猜你知道這一點,並且你的代碼是現貨。 –

0

如果您打算處理的是空格和句號字符的「編碼」版本,則只需調用string.replace並將「_」替換爲「'和」@ 46 @「替換爲」 」。 http://msdn.microsoft.com/en-us/library/fk49wtc1.aspx。如果可能的話,你會遇到其他ascii'編碼',那麼你需要用正確的方法解碼(可能來自編碼它的相同類/庫)。

-1

它看起來像格式爲:(因此是46)

@ XX @其中xx是ASCII字符的十進制數和空間由下劃線所取代。

看起來像自制的URL編碼機制,但可能是錯誤的。

所以你想要的是一個正則表達式,它尋找類似@[0-9]{1,3}@的東西,並用ascii代碼表示的實際字符替換它。

除_以外可能還有其他的直接替換,但這與我可以告訴你的一樣。

+0

這是怎麼回事? – PhonicUK

+1

string.replace答案只會對_和@ 46 @進行排序,需要一個正則表達式來根據我確定的編碼來排列所有可能的值。如果他們解碼其中有@ 64 @的另一個字符串呢? (它應該是@字符)你需要一個正則表達式來找到所有的組合。一個string.replace本身對於查找複雜模式沒有用,但是當然你不會使用regexp.replace來處理靜態字符串。 – PhonicUK