【发布时间】:2017-07-09 20:01:06
【问题描述】:
我遇到了这个烦人的功能/错误。假设我有一个带有尾随空格的字符串,如下所示:
string value = "someValue ";
空格的数量可能会有所不同。所以我尝试在TextBox 中显示它,并包含在开始和结束标签中,看看它是如何变化的,并且效果很好。
textBox1.Text = $"BEGIN#{value}#END";
但是向我发送此值的设备喜欢在末尾添加一个 \0 空字符,如下所示:
string value = "someValue " + Convert.ToChar(0x00);
当我尝试用相同的方法显示它时:
textBox1.Text = $"BEGIN#{value}#END;
它会导致#END 标记消失。
同样的现象也发生在RichTextBox。
问题: 为什么空字符会杀死/吃掉字符串的其余部分? 是否像在 C 或 C++ 中那样被解释为字符串中 char 数组的结尾?
【问题讨论】:
-
这就是 Windows 控件通常的行为方式。是的,就像在 C 或 C++ 中一样,您的设备显然将
'0'作为您也应该尊重的普遍接受的终结符。 -
value = value.TrimEnd('\0')? -
@GSerg 不,不幸的是,我的设备将其视为错误。所以我想我只需要调整并小心删除它。
标签: c# winforms textbox richtextbox null-character