移除“NUL”字符

118

我在我的Notepad++中遇到了类似这样的字符。

npp screenshot of NULs

当我试图复制整行时,实际上复制的是直到“NUL”的所有内容:

File:1
我想做的是用空白替换这些 null,以便我可以复制整行。 也许有关键字可以告诉记事本++(或任何其他可能有帮助的程序)替换这些字符吗? 当我选择它时,使用右键然后“清除”,它就消失了 - 但我不想一个一个地做。 我不在乎删除问题的原因,只在乎影响(NULs)。
7个回答

142

10
请注意,您应该尝试使用"\x00"、"\00"或"\0"。对于我来说,\x00和\00都不起作用。我需要使用\0作为替换字符。 - Hooplator15
1
@JohnAugust非常感谢您的帮助。我一直找到了“普通”的空格以及NUL字符。 - Steffen Winkler
Thx 想要在一个 .dmp 文件中搜索一个多行文本块。但不幸的是,记事本崩溃了,可能是因为转储文件太大了。 - Mellester

42

点击搜索 --> 替换 --> 查找内容: \0 替换为: "空" 搜索模式: 扩展 --> 替换所有


扩展for循环是用来干什么的? - rooni
@rimiro 扩展的意思是可以匹配特殊转义字符(基本正则表达式元字符,如 \n 等),而不仅仅是输入的字符。 - twobob

16

我遇到了同样的问题,上面的方法让我找对了方向,但在我的情况下并不完全正确。以下操作与此密切相关且有效:

  • 在Notepad++中打开您的文件
  • 键入Control-A(全选)
  • 键入Control-H(替换)
  • 在“查找内容”中键入\x00
  • 在“替换为”中留空
  • 在“搜索模式”中选择“扩展”
  • 然后单击“全部替换”

不需要选择所有文本(第二个项目符号),解决方案无论是否选择都能正常工作 :) - Piemol

7

尝试使用查找和替换功能。在“查找文本”框中输入\x00,勾选“正则表达式”选项。将“替换文本”框留空,然后点击“全部替换”按钮。快捷键为Ctrl+H。


6
使用\x00进行查找。您可能需要检查正则表达式选项。 - Miller
你必须使用正则表达式,因为显然你不能直接复制粘贴一个特殊字符。 - mahieddine
我根据 Stack Overflow 上的问题回答,他正在询问 Notepad++ 而不是记事本。我不知道为什么人们对我的回答进行了负面评价,而其他人则对 AlexShumilov 的回答进行了点赞。 - Miller

4

我曾尝试使用 \x00 进行C#和Regex的操作,但最终没有成功。下面是我成功实现的方法:

//The hexidecimal 0x0 is the null character  
mystring.Contains(Convert.ToChar(0x0).ToString() );  

// This will replace the character
mystring = mystring.Replace(Convert.ToChar(0x0).ToString(), "");  

1
这与Notepad++有什么关系? - ChrisWue
楼主询问有没有类似notepad++的软件或其他能帮助的程序。请问您是否可以更新回答并提供额外的代码,以便它可以帮助其他的.Net新手(例如从驱动器读取文本文件、替换nul字符、保存回文本文件,就像这个一样,并说明如何在没有VS的情况下启动C#代码,例如只使用csc.exe)。 - omegastripes

2

打开Notepad++
选择替换 (Ctrl/H)
查找内容: \x00
替换为:
点击正则表达式单选按钮
点击替换全部


-1

选中一个空字符,进入查找替换 - 它通常会自动将选中的文本插入到查找框中。在替换框中输入一个空格或留空。


8
在Notepad++中,这并不适用于NUL字符。它可以适用于许多其他ASCII特殊字符,例如BEL,但是要使用扩展转义码或正则表达式才能找到NUL。 - Ayelis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接