2015-11-23 58 views
0

我有以下問題轉換Unicode字符(C#)測試

我使用的返回值構成數據庫的SDK。

我需要的值是4,6,7,但SDK返回「\ u0004」,「\ u0006」,「\ u0007」我想知道是否有方法檢查它是否爲「\ u0004」, 「\ u0006」,「\ u0007」或者這樣做的任何方式?

我有以下代碼(C#):

Line_Type = Line_Type.Replace(@"\u000", ""); 
if (Line_Type == "4") 
{ 
    Line_Type = "4"; 
} 
else if (Line_Type == "6") 
{ 
    Line_Type = "6"; 
} 
else if (Line_Type == "7") 
{ 
    Line_Type = "7"; 
} 

我曾嘗試多種方式來獲取完成,但無法找到一個合適的方式來完成這件事。

我有谷歌,但找不到任何東西。

+0

不知道我理解你的問題,但是你的代碼似乎有一些問題:ifs中的代碼是毫無意義的:'如果變量==某些變量=某事'。另外,您正在從Line_Type的每個值中剝離「\ u000」,這可能不是您想要的操作 –

+0

是的抱歉,我在複製和粘貼時出錯。總之,我想要從Line_Type去除\ u000,這樣我只能得到4,6,7作爲一個字符串 –

回答

4

從你的問題我明白,SDK以統一格式返回值。 然後,您可以使用以下代碼將unicode值轉換爲相應的十進制值。

char uniCodeValue = char.Parse(Line_Type);// '\u0004' unicode values 
int decimalValue = uniCodeValue; 
Console.Write(decimalValue.ToString()); // prints 4 

希望你的問題解決了!

+0

這段代碼的工作原理,但我有點改變它有點謝謝 –

+1

歡迎安德烈。請根據您的要求定製代碼。 –

0

在你的替換調用中,「\ u」被認爲是一個轉義字符。如果你使用double \,你會得到字符串「\ u0009」; 檢查這兩者之間的區別:

Console.WriteLine ("\u0009"); 
Console.WriteLine ("\\u0009"); 

第二打印你試圖用一個空字符串替換字符串。

+0

Sr,因爲這個問題已經解決了,但是你提到的錯誤是錯誤的。作者在字符串之前鍵入一個@符號,這意味着\符號不再被視爲Escape Sign。 –

+0

對,我錯過了。我剛剛提出了Nikson的回答,那實際上是解決你的問題 –

相關問題