3

如何连接字符串"\u""a string"获得“\u0000”?

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

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

5 回答 5

4

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

char.ConvertFromUtf32(strUnicodeOfMiddleChar).ToString()

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

于 2013-11-14T21:02:38.957 回答
4

如果我理解正确,我认为您想从任意 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 建议更正。)

于 2013-11-14T21:03:30.830 回答
2

正确转义你的角色!!

两个都:

// 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';
于 2013-11-14T21:05:35.690 回答
2

下面的行创建两个反斜杠:

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

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

于 2013-11-14T20:59:37.830 回答
2

不,那个字符串真的有一个反斜杠。把它打印到控制台,你会看到的。

于 2013-11-14T21:00:05.743 回答