如何连接字符串"\u"
以"a string"
获得“\u0000”?
我的代码创建了两个反斜杠:
string a = @"\u" + "0000"; //ends up being "\\\u0000";
转义序列\uXXXX
是语言语法的一部分,表示单个 Unicode 字符。相比之下,@"\u"
和"0000"
是两个不同的字符串,共有六个字符。连接它们不会神奇地将它们变成单个 Unicode 转义。如果您尝试将 Unicode 代码点转换为单字符串,请执行以下操作:
char.ConvertFromUtf32(strUnicodeOfMiddleChar).ToString()
顺便说一句,不要使用== true
; 这是多余的。
如果我理解正确,我认为您想从任意 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 建议更正。)
正确转义你的角色!!
两个都:
// 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';
下面的行创建两个反斜杠:
string a = @"\u" + "0000"; //a ends up being "\\u0000";
不,它没有;调试器将“\”显示为“\”,因为这就是您在 C# 中编写反斜杠的方式(当您不使用 @ 为字符串添加前缀时)。如果您打印该字符串,您将看到\u0000
,而不是\\u0000
。
不,那个字符串真的有一个反斜杠。把它打印到控制台,你会看到的。