У меня есть текстовый файл с разделителями каналов, который поступает ежедневно с разрывами строк в результате прерывания онлайн-фида.Fixing Linefeed breaks
Каждая строка в файле начинается с FORM_
, поэтому я обычно открыть файл в блокноте ++, использовать поиск и замену или для ^[^FORM]
или ([^\S \r\n]*)\n([^\S\r\n]*)
и вручную исправить ошибку.
Из-за ограничений в технологии, в которых я работаю, я пишу сценарий 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)
Это не сработало. Когда я пытаюсь сделать версию вышеуказанного кода .ReadAll
из 125 000 записей, я получаю только 59 000 записей.
Не могли бы вы посоветовать, что это лучший способ сделать это, поскольку он должен работать ежедневно?
Вы можете добавить некоторые провала попытки образцы и часть кода, где RegEx экземпляр? –
Во-первых: В двух 'Replace' внизу вы используете' strReader' как вход для обоих - не должен ли второй иметь 'strCleansedLine'? Во-вторых, то же самое относится к оператору 'WriteLine' - не должно быть результата второго' Replace' (также 'strCleansedLine')? – ClasG