我有一个字符串变量,它包含以下文本:
\0#«Ия\0ьw7к\b\0E\0њI\0\0ЂЪ\n
当我尝试将其添加到TextBox控件时,没有任何反应。因为\0表示结束。
我该如何按原样添加文本?
更新: 文本是动态放置在变量中的。因此,@不适用。
"\\0#«Ия\\0ьw7к\\b\\0E\\0њI\\0\\0ЂЪ\\n"
或者
@"\0#«Ия\0ьw7к\b\0E\0њI\0\0ЂЪ\n"
您是想要“显示”反斜杠的想法吗?如果是这样,那么反斜杠需要在原始字符串中。
如果您从字符串文字中获取该文本,那么只需要将其变为“逐字字符串文字”即可: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", "");
好的,我不知道你的文本来自哪里,但如果必要的话,你可以使用
using System.Text.RegularExpressions;
...
string escapedText = RegEx.Escape(originalText);
它包含以下文本:
\0#«Ия\0ьw7к\b\0E\0њI\0\0ЂЪ\n
不是的。那是调试器告诉你它包含的内容。调试器自动将内容格式化,就好像你在源代码中直接写入了它。字符串实际上不包含反斜杠,它们是调试器格式化程序添加的。
该字符串实际上包含二进制零。您可以使用string.ToCharArray()查看这一点。您无法直接显示此字符串,必须摆脱其中的零。例如,以十六进制显示内容可能有效,BitConverter.ToString(byte[])可以帮助实现这一点。
不行。
标准的Windows控件无法显示空字符。
如果您想显示文字 "\0",请将该字符串以 "@" 符号开头,这告诉编译器不要解析转义序列。(例如:@\0#«Ия\0ьw7к\b\0E\0њI\0\0ЂЪ\n"
)
如果您想尽可能多地显示该字符串,则可以去掉空字符,像这样:
textBox.Text = someString.Replace("\0", "");
你也可以用转义码来替换它们:
textBox.Text = someString.Replace("\0", @"\0");