如何将字符串"\u"
与"a string"
连接起来以获取“\ u0000”?
我的代码创建了两个反斜杠:
string a = @"\u" + "0000"; //ends up being "\\\u0000";
答案 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';