VB.NET - заменить значение столбца в текстовом файле с пробелом - PullRequest
0 голосов
/ 22 февраля 2019

Я пытаюсь запустить скрипт vb.net из служб SSIS, чтобы выполнить следующие действия в тексте с разделителями-пробелами:

  1. Выполнить цикл по всем файлам в каталоге (я уже кодировал это с помощью .GetFiles)
  2. Внутри каждого текстового файла цикл по каждой строке в файле
  3. Заменить / вставить значение в строку
  4. Сохранить файл

Я изо всех сил пытаюсь придумать метод для замены / вставки значения.Я не верю, что это возможно с ReadLines, и мои поиски не нашли никаких решений для моей ситуации.Все решения, которые я нахожу, рекомендуют использовать .split, но, поскольку этот файл имеет текстовый разделитель и размеры столбцов различаются, .split и .replace не будут работать.

Есть идеи?Вот пример строки из текстового файла и куда я хочу вставить значение;

WMS0104        N00011              800171548-1    20190221                                                                                                                                  OVPRC                    <INSERT VALUE HERE>            PRINTER13           000000000000000000000000000000010000000000000000                                                                      00000000000000000000000000000000000000000000000000000000000000000000000000000     2019022108511300                                                                  00000000000000                                            00000000000000001

1 Ответ

0 голосов
/ 22 февраля 2019

Понял

        Dim BeforeWH_ID, ExistingWH_ID, AfterWH_ID, DesiredWH_ID, NewLineRecord As String

            DesiredWH_ID = "034                             "

            Dim lines() As String = IO.File.ReadAllLines(ExportFilePath)

            'Loop through each line in the array
            For i As Integer = 0 To lines.Length - 1

                'Fill line variables
                BeforeWH_ID = Mid(lines(i), 1, 215)
                ExistingWH_ID = Mid(lines(i), 215, 32)
                AfterWH_ID = Mid(lines(i), 247, 377)

                NewLineRecord = BeforeWH_ID & DesiredWH_ID & AfterWH_ID

                'Compare WH_ID
                If ExistingWH_ID <> DesiredWH_ID Then
                    'Replace the line in the array
                    lines(i) = NewLineRecord
                Else
                    'Keep the line in the array
                    lines(i) = lines(i)
                End If

                'Reset Variables
                BeforeWH_ID = Nothing
                ExistingWH_ID = Nothing
                AfterWH_ID = Nothing
                NewLineRecord = Nothing

            Next
            'Overrite existing file with line array
            IO.File.WriteAllLines(ExportFilePath, lines)
...