2013-11-14 163 views
3

如何連接字符串"\u""a string"以獲得「\ u0000」?如何用另一個字符串連接字符串和反斜槓

我的代碼創建了兩個反斜線:

string a = @"\u" + "0000"; //ends up being "\\\u0000"; 
+0

你使用什麼語言? – Josh

+0

我正在使用c#語言 – Mohsen

+0

我想在另一個字符串中搜索sting:if(code2.StartsWith(@「\ u」+ strUnicodeOfMiddleChar)== true) – Mohsen

回答

2

線下創建拖反斜線:

string a = @"\u" + "0000"; //a ends up being "\\u0000"; 

不,它不支持;調試器顯示「\」爲「\」,因爲這就是您在C#中編寫反斜槓的方式(當您不在@前面加字符串時)。如果您打印該字符串,您將看到\u0000,而不是\\u0000

2

不,那個字符串真的有單個反斜槓。打印到控制檯,你會看到。

4

轉義序列\uXXXX是語言語法的一部分,表示一個Unicode字符。相比之下,@"\u""0000"是兩個不同的字符串,總共有六個字符。連接它們不會奇蹟般地將它們變成單個Unicode轉義。 如果你想一個Unicode代碼點轉換爲單字符字符串,這樣做:

char.ConvertFromUtf32(strUnicodeOfMiddleChar).ToString() 

BTW,不要使用== true;這是多餘的。

+0

所以你的支票變成:if(code2.StartsWith (char.ConvertFromUtf32(0000))){/ * Your action * /} – Wolfwyrd

3

如果我理解正確,我認爲你想從一個任意的Unicode值(4個十六進制數字)構建一個單一字符串。所以給定字符串「0000」,你想把它轉換成字符串「\ u0000」,即包含單個字符的字符串。

我想這是你想要什麼:

string f = "0000"; // Or whatever 
int  n = int.Parse(f, NumberStyles.AllowHexSpecifier); 
string s = ((char) n).ToString(); 

結果字符串s"\u0000",然後你就可以使用您的搜索。

(含修正由Thomas Levesque的建議。)

+0

我認爲你的意思是int.Parse,而不是string.Parse ... –

+0

謝謝大衛。它工作正常。 – Mohsen

2

Escape你的角色正確!

兩個:

// I am an escaped '\'. 
string a = "\\u" + "0000"; 

和:

// I am a literal string. 
string a = @"\u" + "0000"; 

會工作得很好。但是,在這裏,我正在走出一條肢體,我猜你試圖逃避一個Unicode字符和十六進制值,所以,你需要:

// I am an escaped Unicode Sequence with a Hex value. 
char a = '\uxxxx';