如何解决击中某个字符串时将文本文件拆分为多个文件
我对编程还很陌生,因此我在工作中承担了这项任务。每当文本文件命中字符串字符{1:
并以-}
结尾时,我都需要对文本文件进行拆分,然后创建一个新的文本文件。请参见下面的示例:
原始文本文件:
{1:F01BOF}{2:I940B}{4:dfdfd :20:06AUG :25:64 -}{1:F01BO}{2:I940{4:dfdfd :20:06AUG2 :25:6412 :64:C200806EUR1748473,62 -}{1:F01}{2:I940XN}{4:fvfddf :20:06AUG81-}
新文本1:
{1:F01BOF}{2:I940B}{4:dfdfd :20:06AUG :25:64 -}
新文本2
{1:F01BO}{2:I940{4:dfdfd :20:06AUG2 :25:6412 :64:C200806EUR1748473,62 -}
新文本3:
{1:F01}{2:I940XN}{4:fvfddf :20:06AUG81-}
我正在使用下面的代码,但它似乎没有拾取大括号字符
Set fso = CreateObject("Scripting.FileSystemObject")
data = split(fso.OpenTextFile("C:\JustNeeded.txt").ReadAll,"{1")
For i = 1 To UBound(data)
fso.OpenTextFile("new" & i & ".txt",2,True).Write "{1" & data(i)
Next
我正在阅读正则表达式,应该改用它吗?任何帮助将非常感谢。
解决方法
- VBScript中的数组基于0。最好从0开始循环。
- 在结尾定界符
-}
处进行拆分比较聪明,因此拆分结果的第一个元素不能为空。 - 我正在使用
With
块来组织代码。很难一眼就能读懂“一行完成”。 - 我正在使用
Option Explicit
,因此必须正确声明所有变量。这样可以避免将变量名中的拼写错误调试为问题,将Option Explicit
与所有VB代码一起使用是一种很好的习惯。 - 使用口语名称(例如
ForWriting
)创建常量要比使用不透明的“幻数”(例如2
)好得多。 - 请注意,您正在以Unicode格式编写文件,但并未以Unicode格式读取文件。这可能是有意或无意的,这是您的电话。
- 在这里严格地不必在文件句柄上调用
.Close
,但这是一种很好的方式。
改进的代码:
Option Explicit
Dim FSO,text,parts,i
Const ForReading = 1
Const ForWriting = 2
Set FSO = CreateObject("Scripting.FileSystemObject")
With FSO.OpenTextFile("C:\JustNeeded.txt",ForReading)
text = .ReadAll
.Close
End with
parts = Split(text,"-}")
For i = 0 To UBound(parts) - 1
If Len(parts(i)) > 0 Then
With FSO.OpenTextFile("new" & (i + 1) & ".txt",ForWriting,True)
.Write parts(i) & "-}"
.Close
End With
End If
Next
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。