2017-02-20 84 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 
    } 
} 
相關問題