正如您要求删除(不替换为空格),我建议:
Const csInF = "..\data\13930436.txt"
Const csOutF = "..\data\13930436-c.txt"
Dim oFS : Set oFS = CreateObject("Scripting.FileSystemObject")
Dim sAll : sAll = oFS.OpenTextFile(csInF).ReadAll()
WScript.Echo sAll
Dim reR : Set reR = New RegExp
reR.Global = True
reR.Multiline = True
reR.Pattern = "^(.{23})(.{10})"
WScript.Echo reR.Pattern
oFS.CreateTextFile(csOutF, True).Write reR.Replace(sAll, "$1")
WScript.Echo oFS.OpenTextFile(csOutF).ReadAll()
输出:
============================================================
12341234567 2635473234 123456789 sfhwruewtbdsvmhsgfiergn
12341234567 2635473234 XxxxxxxxX sfhwruewtbdsvmhsgfiergn
12341234567 2635473234 ......... sfhwruewtbdsvmhsgfiergn
^(.{23})(.{10})
12341234567 2635473234 sfhwruewtbdsvmhsgfiergn
12341234567 2635473234 sfhwruewtbdsvmhsgfiergn
12341234567 2635473234 sfhwruewtbdsvmhsgfiergn
============================================================
要在生产中使用“ReadAll, Replace using RegExp, Write back”策略,您应该学习 VBScript 文档 wrt FileSystemObject 和 RegExp。
更新(规格变更后):
使用
oFS.CreateTextFile(csOutF, True).Write reR.Replace(sAll, "$1" & Space(10))
得到:
...
12341234567 2635473234 ......... sfhwruewtbdsvmhsgfiergn
^(.{23})(.{10})
12341234567 2635473234 sfhwruewtbdsvmhsgfiergn
...
更新 II(规格更改后:仅限 zap 编号):
更改正则表达式模式
reR.Pattern = "^(.{23})(.{10})" ' look for 10 arbitrary characters (.)
到
reR.Pattern = "^(.{23})(\d{9} )" ' look for 9 digits (\d) plus 1 space
输出:
12341234567 2635473234 123456789 sfhwruewtbdsvmhsgfiergn
12341234567 2635473234 XxxxxxxxX sfhwruewtbdsvmhsgfiergn
12341234567 2635473234 987654321 sfhwruewtbdsvmhsgfiergn
12341234567 2635473234 abcdefghi sfhwruewtbdsvmhsgfiergn
^(.{23})(\d{9} )
12341234567 2635473234 sfhwruewtbdsvmhsgfiergn
12341234567 2635473234 XxxxxxxxX sfhwruewtbdsvmhsgfiergn
12341234567 2635473234 sfhwruewtbdsvmhsgfiergn
12341234567 2635473234 abcdefghi sfhwruewtbdsvmhsgfiergn
请参阅RegExp Syntax 了解图案中有趣的字母。