2017-02-20 1 views
0

나는이 성가신 기능/버그를 발견했습니다. 다음과 같은 후행 공백이있는 문자열이 있다고 가정하십시오.TextBox 및 RichTextBox의 나머지 출력을 삭제하는 null 문자

공백은 다를 수 있습니다. 그래서 나는 시작과 끝 태그로 둘러싸인 TextBox에 그것을 보여줌으로써 그것이 어떻게 변하는지를 보여주고 완벽하게 작동합니다.

textBox1.Text = $"BEGIN#{value}#END"; 

그러나 저를 보내 장치는이 값이 같은 말에 \0 널 문자를 추가하는 추천했습니다 :

:

string value = "someValue " + Convert.ToChar(0x00); 

와 나는 같은 방법으로 표시 할 때

textBox1.Text = $"BEGIN#{value}#END; 

태그가 없으면 #END 태그가 사라집니다. 동일한 현상이 RichTextBox에서 발생합니다.

enter image description here

질문 : 왜 널 문자/죽이는 문자열의 나머지 부분을 먹는합니까? 문자열에서 char 배열의 끝으로 해석되는 것은 C 또는 C++과 비슷합니까?

+0

Windows 컨트롤이 일반적으로 작동하는 방식입니다. 네, C 나 C++과 비슷합니다. 그리고 여러분의 장치는 분명히 존중해야하는 일반적으로 받아 들여지는 터미네이터로''0 ''을 넣습니다. – GSerg

+0

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

+0

@GSerg 내 장치가 불행히도 버그로 처리합니다. 그래서 나는 그것을 제거하기 위해 조정하고 돌봐야 만한다고 생각합니다. –

답변

1

C 및 C++와 같은 일부 언어에서 Null 문자는 문자열의 끝을 나타냅니다. .NET Framework에서 null 문자는 문자열에 포함될 수 있습니다. 문자열에 하나 이상의 널 문자가 포함되면 문자열의 총 길이에 포함됩니다. 예를 들어, 다음 문자열에서 하위 문자열 "abc"와 "def"는 null 문자로 구분됩니다. Length 속성은 7자를 반환합니다.이 문자는 6 자의 알파벳 문자와 null 문자를 포함합니다.

using System; 
using System.Text; 

public class StringClassTest 
{ 
    public static void Main() 
    { 
     string characters = "abc\u0000def"; 
     Console.WriteLine(characters.Length); // Displays 7 
    } 
}