0

我遇到了这个烦人的功能/错误。假设我有一个带有尾随空格的字符串,如下所示:

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 数组的结尾?

4

1 回答 1

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
   }
}
于 2017-02-20T13:57:19.470 回答