我有一个以管道分隔的文本文件,每天都会因在线Feed中断而导致换行。
文件中的每一行都以FORM_
开头,所以我通常在记事本++中打开文件,使用^[^FORM]
或([^\S \r\n]*)\n([^\S\r\n]*)
的查找和替换,并手动修复错误。< / p>
由于我工作的技术有限,我正在编写一个vb脚本,最终将作为可执行文件,以解决此问题。
我在这里寻找了一些可能的答案,以下是我的尝试:
一次读取一行文件,然后使用正则表达式替换上述任一搜索条件:
objFixFormFile = objFSO.OpenTextFile(FileLocation & filename, 1)
objWriteFormFile = objFSO.CreateTextFile(FileLocation & NewFileName, True)
Do while not objFixFormFile.AtEndOfStream
If strReader = "" THEN
strReader = objFixFormFile.ReadLine
Else
strReader = strReader & ";" & objFixFormFile.ReadLine
End if
Loop
ObjFixFormFile.Close
strCleansedLine = RegEx.Replace(strReader, ("[^\S \r\n]*)\n([^\S\r\n]*)", "")
strCleansedLine = RegEx.Replace(strReader, ";", "\n")
objWriteFormFile.Writeline(strWriter)
那不起作用。当我尝试从125,000条记录中执行上述代码的.ReadAll
版本时,我最终只有59,000条记录。
你能否告诉你最好的方法是什么,因为它需要每天运行?
答案 0 :(得分:0)
如果当前行以FROM_
开头,则只写上一行的换行符:
Do Until objFixFormFile.AtEndOfStream
line = objFixFormFile.ReadLine
If Left(line, 5) = "FROM_" And objFixFormFile.Line > 2 Then
objWriteFormFile.WriteLine
End If
objWriteFormFile.Write line
Loop
objWriteFormFile.WriteLine
objFixFormFile.Close
objWriteFormFile.Close