空字符删除TextBox和RichTextBox中输出的其余部分
问题描述:
我遇到了这个烦人的功能/错误。假设我有一个如下所示的尾随空格的字符串:空字符删除TextBox和RichTextBox中输出的其余部分
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数组的结尾?
答
在某些语言(如C和C++)中,空字符表示字符串的结尾。在.NET Framework中,可以将空字符嵌入到字符串中。当一个字符串包含一个或多个空字符时,它们包含在总字符串的长度中。例如,在以下字符串中,子字符串“abc”和“def”由空字符分隔。 Length属性返回7,表示它包含六个字母字符以及空字符。
using System;
using System.Text;
public class StringClassTest
{
public static void Main()
{
string characters = "abc\u0000def";
Console.WriteLine(characters.Length); // Displays 7
}
}
这就是Windows控件的一般表现。是的,就像在C或C++中一样,你的设备显然会把'0'作为你应该尊重的普遍接受的终结者。 – GSerg
'value = value.TrimEnd('\ 0')'? – spender
@GSerg不幸的是,我的设备没有把它作为一个bug。所以我想我只需要调整并注意删除它。 –