2016-12-28 28 views
2

我有以下字符串:C# - 如何使用正則表達式來替換NULL字符?

< \0\"\0E\0x\0t\0e\0n\0s\0i\0b\0i\0l\0i\0t\0y\0,\0v\0e\0r\0s\0i\0o\0n\0=\0\\\0\"\07\0.\00\0.\03\03\00\00\0.\00\0\\\0\"\0,\0p\0u\0b\0l\0i\0c\0K\0e\0y\0T\0o\0k\0e\0n\0=\0\\\0\"\0B\00\03\0F\05\0F\07\0F\01\01\0D\05\00\0A\03\0A\0\\\0\"\0,\0f\0i\0l\0e\0V\0e\0r\0s\0i\0o\0n\0=\0\\\0\"\07\0.\00\0.\09\04\06\06\0.\01\0\\\0\"\0,\0c\0u\0l\0t\0u\0r\0e\0=\0\\\0\"\0n\0e\0u\0t\0r\0a\0l\0\\\0\"\0\"\0=\0h\0e\0x\0(\07\0)\0:\07\08\0,\0\\\0" 

在記事本+ +,它看起來是這樣的: enter image description here

我想用正則表達式來替換所有的「NULL」的情況下,但我似乎無法得到正確的搜索模式。這是我的代碼:

 FileInfo file = new FileInfo(path); 
     string line; 
     using (StreamReader reader = new StreamReader(file.FullName)) 
     { 
      while ((line = reader.ReadLine()) != null) 
      { 
       Regex rgx = new Regex(@"^[\00|\0]"); 
       line = rgx.Replace(line, ""); 

       System.Console.WriteLine(line); 
       CurrentLine++; 
      } 
     } 

但是,這似乎並沒有取代任何文字。這對於正確的搜索模式會是什麼?

回答

2

與您正則表達式的問題是^字符,這意味着你的正則表達式只會看串了NULL字符的開始。把它關掉,你的代碼就可以正常工作。

+0

是的,這確實起作用。謝謝! 'Regex.Replace(線,@ 「[\ 0 | \ 00]」, 「」);'或'正則表達式RGX =新的Regex(@ 「[\ 00 | \ 0]」);' –

+0

很高興我能幫助。快樂編碼:) – Nasreddine

2

你不需要正則表達式,你可以使用String.Replace()

line = line.Replace("\u0000", "");