2017-02-20 81 views
0

我遇到了这个烦人的功能/错误。假设我有一个如下所示的尾随空格的字符串:空字符删除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

enter image description here

问: 为什么空字符杀/吃串的休息吗? 它在C或C++中是否被解释为字符串中char数组的结尾?

+0

这就是Windows控件的一般表现。是的,就像在C或C++中一样,你的设备显然会把'0'作为你应该尊重的普遍接受的终结者。 – GSerg

+0

'value = value.TrimEnd('\ 0')'? – spender

+0

@GSerg不幸的是,我的设备没有把它作为一个bug。所以我想我只需要调整并注意删除它。 –

回答

1

在某些语言(如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 
    } 
} 
相关问题