修复换行符

时间:2016-03-23 03:36:26

标签: regex vbscript

我有一个以管道分隔的文本文件,每天都会因在线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条记录。

你能否告诉你最好的方法是什么,因为它需要每天运行?

1 个答案:

答案 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