【问题标题】:How to delete <0x00> characters in Sublime Text 3?如何删除 Sublime Text 3 中的 <0x00> 字符?
【发布时间】:2018-12-29 04:12:36
【问题描述】:

问题

所以我有这个包含&lt;0x00&gt; 字符的大文本文件(见下图)。

如上图所示,我尝试使用正则表达式 \x00 删除这些字符。除此之外,我还尝试了\0\00,但没有成功。

但是,当我尝试在 Sublime Text 中替换这些字符时,弹出一个窗口显示这些 &lt;0x00&gt; 字符确实已找到(见下图),到目前为止一切顺利。

不幸的是,当我点击“替换”按钮时,字符没有被替换。

问题

我怎样才能摆脱这些&lt;0x00&gt; 字符?

附言值得一提的是,我无法对“0”进行搜索,因为此文本文件包含零,我想保留它。

进度更新#1

我已成功将 字符复制到“查找”搜索框(见下图)。

但是,即使我尝试用文本文件中的空字符替换此字符,也不会发生任何更改。

进度更新#2(解决方案)

如果没有@00 的帮助,我将找不到这个问题的答案,谢谢!

说明

该文件以 UTF-16 编码,但我认为它是 UTF-8。该文件是在 BOM UTF-8 中打开的,这正是我无法在 Sublime Text 3 中删除 &lt;0x00&gt; (NUL) 字符的原因。

解决方案

在“bash”或“终端”中执行以下命令:

sed -i 's/\x0//g' [textfile_name].txt

【问题讨论】:

  • 这些字面意思是&lt;0x00&gt; 还是只是表示␀字符的标记?
  • @00 我不确定我是否正确,但我确实认为它们是标记,因为它们是灰色的。但是,当我单击这样一个字符时,它会选择整个字符,而不是 &lt;0x00&gt; 的“单个”字符。
  • 听起来他们是 NULL 的。您的文件一定已损坏。不幸的是,如果 \0 正则表达式似乎不起作用,您可能必须发挥创造力并使用外部程序来删除或从备份/源代码控制中提取
  • @00 我现在确定它们是 NULL,因为十六进制的 0x00 表示 NULL。但是,您说我的文件可能已损坏。我怎么能替换“常规”文本,例如将“英语”一词改为“西班牙语”,出于某种奇怪的原因,这是可能的,但替换 &lt;0x00&gt; 不是吗?
  • 我已经设法找到/替换工作并将其写在答案中。再次尝试\0 的正则表达式

标签: replace sublimetext3


【解决方案1】:

好的,我自己试过了,似乎正则表达式可以工作。确保您选择了正则表达式选项(在图像中突出显示)并使用 \0 的正则表达式:

现在只需确保替换字段中没有任何内容,然后点击全部替换。 NUL 字符应该消失了。

注意

在阅读时,您似乎在每个其他字符之后都有一个 NUL,这可能表明该文件实际上是 UTF-16(如果是这种情况,您想要删除它们)并且需要重新加载。如果切换到 UTF-16 并且我的上述解决方案不起作用,this 线程可能对您有用。

【讨论】:

  • 感谢您的回答,您的解决方案确实无效。但是,您确实提到该文件是 UTF-16,这是真的!感谢您注意到这一点并参考了另一个线程,其中包含我需要的解决方案。我用以下命令修复了它:sed -i 's/\x0//g' [textfile_name].txt
  • 没问题,很高兴能帮上忙!
  • @Kamuffel - 这个解决方案对我有用,是根据您的问题的适当答案。请标记正确。
  • 嘿,我不知道,如果新版本的 Sublime 改变了这种情况,但我必须标记 RegExp 搜索,就像你解释的那样,然后分别查找 \00\01,等等。搜索\0 对我不起作用。
猜你喜欢
  • 2014-02-08
  • 1970-01-01
  • 1970-01-01
  • 2015-09-01
  • 2015-02-04
  • 1970-01-01
  • 2022-01-03
  • 2013-12-19
  • 2020-06-25
相关资源
最近更新 更多