如何使用反斜杠将字符串与另一个字符串连接起来

时间:2013-11-14 20:41:46

标签: c# join backslash

如何将字符串"\u""a string"连接起来以获取“\ u0000”?

我的代码创建了两个反斜杠:

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

5 个答案:

答案 0 :(得分:4)

转义序列\uXXXX是语言语法的一部分,表示单个Unicode字符。相比之下,@"\u""0000"是两个不同的字符串,总共六个字符。连接它们不会神奇地将它们变成单个Unicode转义。 如果您尝试将Unicode代码点转换为单字符字符串,请执行以下操作:

char.ConvertFromUtf32(strUnicodeOfMiddleChar).ToString()

顺便说一句,不要使用== true;这是多余的。

答案 1 :(得分: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建议更正。)

答案 2 :(得分:2)

  

下面的行会产生反斜杠:

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

不,它没有;调试器将“\”显示为“\”,因为这就是你在C#中编写反斜杠的方式(当你不在字符串前加上@时)。如果您打印该字符串,则会看到\u0000,而不是\\u0000

答案 3 :(得分:2)

不,那个字符串确实有单反斜杠。打印到控制台,你会看到它。

答案 4 :(得分: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';