首页 > 解决方案 > 从 txt 读取并清理 \x00

问题描述

我有一个这种格式的 .txt:

图片

我可以像这样删除 Notepad++ 中的 NUL 字符:

解决方案

所以我阅读了它,我找到了将正则表达式“\x00”替换为“”的解决方案......但我需要创建一个 VBScript。我发现了这样的例子:

sPath = "C:\Users\AL\T_1538_89945.txt"
sContent = ReadTextFile(sPath, 0) ' lFormat -2 - System default, -1 - Unicode, 0 - ASCII
sContent = Replace(sContent, "\x00", " ")
WriteTextFile sContent, sPath, 0

Function ReadTextFile(sPath, lFormat)
    With CreateObject("Scripting.FileSystemObject").OpenTextFile(sPath, 1, False, lFormat)
        ReadTextFile = ""
        If Not .AtEndOfStream Then ReadTextFile = .ReadAll
        .Close
    End With
End Function

Sub WriteTextFile(sContent, sPath, lFormat)
    With CreateObject("Scripting.FileSystemObject").OpenTextFile(sPath, 2, True, lFormat)
        .Write sContent
        .Close
    End With
End Sub

但它不起作用,有人可以调整代码以便它可以从那个位置运行它来清理那些正则表达式吗?

标签: vbscript

解决方案


替换此行sContent = Replace(sContent, "\x00", " ")

对此sContent = Replace(sContent, ChrW(0), " ")

您试图替换字符串 "\x00" 而不是实际的 NULL 字符。我使用ChrW()将那个特定的字符替换为空格。Null 由字符 0 表示,因此现在我们不是替换字符串而是替换 NULL 字符。


推荐阅读