问题很简单;如果我有以下字符串:string str = "\0test";如何在 WinForms 的标签中显示字符“\0”,它似乎会截断“\0”之后的所有字符,或者更一般地在控制台输出中,它似乎插入空格而不是“\ 0”?Console.WriteLine(str);
label.Text = str;
4 回答
冉冉说
TA贡献1877条经验 获得超1个赞
您要求显示“不可打印”字符。字体通常没有这些字形,并且在适当的情况下,渲染器会解释 TAB、LF 和 CR 来定位而不是字形。
一种方法是将它们替换为控制图片字符。
String str = "\0test";
var controlCharacters = new Regex(@"([\u0000-\u001F])");
String displayStr = controlCharacters.Replace(str, m => ((Char)(m.Groups[1].Value[0] + '\u2400')).ToString());
// ␀test
您可能仍然遇到用户的字体不支持这些字符的问题。(有些浏览器也不支持,所以可能很难明白我在说什么。)
茅侃侃
TA贡献1842条经验 获得超21个赞
该\0
字符终止一个字符串,并且不应该是可打印的,因为它用于终止一个字符串。
让我们将 替换\0
为°
终止符号。字符串示例:
abcd°
ab°cd°
°abcd°
°°
注意:系统会自动终止字符串,因此所有字符串都以°
. 因此,如果您打印其中任何一个,您将得到:
abcd
ab
(空格为必填项,代表空)
(空格为必填项,代表空)
由于系统在第一次出现终止符号时终止。
- 4 回答
- 0 关注
- 118 浏览
添加回答
举报
0/150
提交
取消