프로그래밍/C#

[C#] Null문자열제거 string.Replace("\0", string.Empty)

ss-pro 2021. 9. 13. 22:23
반응형

문자열관련해서 데이터를 저장하거나 통신을 하다보면 간혹 0x00값이 수신되는경우가 있습니다. 보통 C프로그램과 통신하는 경우 문자열 처리시 NULL문자가 같이 경우가 있는데 해당부분을 제거 하는 방법에 대해 알아보겠습니다. \\0, \\u0000 값으로 데이터가 수신되어 간혹 예기치 않게 처리되는 경우가 있습니다. replace문을 이용해서 간단하게 제거 할수 있습니다.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;

namespace NullStringTest
{
    class Program
    {
        static void Main(string[] args)
        {
            byte[] arrayMsg = {(byte)'0', (byte)'1', (byte)'2', (byte)0x00 , (byte)'3' };

            string b = Encoding.ASCII.GetString(arrayMsg);
            string c = Encoding.ASCII.GetString(arrayMsg);

            // NULL 문자�-� 제거
            c = c.Replace("\0", string.Empty);

            Console.WriteLine(b);
            Console.WriteLine(c);

            using (StreamWriter sw = new StreamWriter("savelog.log"))
            {
                sw.WriteLine(b, 0, b.Length);
                sw.WriteLine(c, 0, c.Length);
            }
        }
    }
}


콘솔출력 결과 

savelog.log 파일저장결과 : NULL문자열을 제거 하지 않았을경우에는 NULL값이 저장된 부분을 확인할수 있고 replace문을 사용해서 NULL제거시 해당부분을 제거하고 저장된 부분을 확인할수 있습니다.