我有一个字符串变量。它包含文字:
\0#«Ия\0ьw7к\b\0E\0њI\0\0ЂЪ\n
当我尝试将其添加到TextBox控件时,没有任何反应。因为\ 0表示END。
如何按原样添加文字?
更新: 文本被动态地放在变量中。因此,@不适合。
答案 0 :(得分:6)
"\\0#«Ия\\0ьw7к\\b\\0E\\0њI\\0\\0ЂЪ\\n"
或
@"\0#«Ия\0ьw7к\b\0E\0њI\0\0ЂЪ\n"
答案 1 :(得分:6)
您是否希望显示反斜杠?如果是这样,反斜杠将需要在原始字符串中。
如果您从字符串文字中获取该文本,则只需将其设为verbatim string literal:
string text = @"\0#«Ия\0ьw7к\b\0E\0њI\0\0ЂЪ\n";
如果想要传入真正包含Unicode“nul”字符(U + 0000)的字符串,那么您将无法让Windows显示该字符串。您应该首先删除这些字符:
textBox.Text = value.Replace("\0", "");
答案 2 :(得分:4)
好吧,我不知道你的文字来自哪里,但如果必须,你可以使用
using System.Text.RegularExpressions;
...
string escapedText = RegEx.Escape(originalText);
但是,如果不够快,字符串将包含空字符。
答案 3 :(得分:2)
它包含文字:
\ 0#«Ия\0ьw7к\ B \ 0E \0њI\ 0 \0ЂЪ\ n
不,不。这就是调试器告诉你它包含的内容。调试器自动格式化内容,就像您在源代码中将其写为文字值一样。该字符串实际上不包含反斜杠,它们是由调试器格式化程序添加的。
该字符串实际上包含二进制零。您可以使用string.ToCharArray()自行查看。你不能按原样显示这个字符串,你必须摆脱零。以十六进制显示内容可能有用,例如,BitConverter.ToString(byte [])有助于此。
答案 4 :(得分:1)
你不能。
标准Windows控件无法显示空字符。
如果您尝试显示文字文本\0
,请将字符串更改为以@
符号开头,告知编译器不要解析转义序列。 (@\0#«Ия\0ьw7к\b\0E\0њI\0\0ЂЪ\n"
)
如果要尽可能多地显示字符串,可以删除空值,如下所示:
textBox.Text = someString.Replace("\0", "");
您也可以使用转义码替换它们:
textBox.Text = someString.Replace("\0", @"\0");
答案 5 :(得分:0)
您可以尝试转义\0
中的反斜杠,即\\0
。有关C#转义序列的完整列表,请参阅this MSDN reference。