Текстовый файл, который я обрабатываю, изменился в способе форматирования данных, поэтому пришло время обновить код, который анализирует его. Старый файл имел фиксированное количество строк и полей на запись, и поэтому синтаксический анализ его по позиции был простым, конечно, теперь это не так (я добавил пробелы для удобочитаемости, символ ~ указывает на новую строку, * - это разделитель полей):Анализ текстового файла с переменными полями Vb.Net
~ лор * 1 * 2J * 34 * 111223333
~ NM1 * IL * 1 * СМИТ Джон А *** Н * 123456789
~ РМР IK H62XX/ОПЛАТА/1234567 /20150103**12345.67
~ REF ZZ MEDPM/М/12345,67
~ REF * LU * 40/CSWI
~ DTM * 582 **** Rd8 * 2 0150101-20150131
~ ENT * 2 * 2J * 34 * 222334444
~ NM1 * IL * 1 * DOE ДЖЕЙН S *** N * 234567891
~ РМР IK H62XX/ОПЛАТА/1234567/345678901 ** 23456,78
~ REF * LU * 40/CSWI
~ DTM * 582 * **** Rd8 20141211-20141231
~ лор * 3 * 2J * 34 * 333445555
~ NM1 * IL * 1 * DOE * JOHN **** N * 3456789012
~ RMR IK H62XX/PAY/200462975/20150103 ** 45678.90
~ REF ZZ MEDPM/М/3456,78
~ REF * LU * 40/CSWI
~ DTM * 582 * **** Rd8 20150101-20150131
~ лор * 4 * 2J * 34 * 444556666
~ NM1 * IL * 1 * SMITH JANE D *** N * 456789012
~ RMR IK H62XX/ОПЛАТА/567890123/6789** 6789,01
~ REF ZZ MEDPM/M/6789,01
~ REF * LU * 40/CSWI
~ DTM * 582 * **** Rd8 20150101-20150131
~ лор * 5 * 2J * 34 * 666778888
~ NM1 * IL * 1 * СМИТ JON J *** Н * 89 ~ RMR IK H62XX/ОПЛАТА/56789012/6789** 5678,90
~ REF ZZ MEDPM/M/5678,90
~ REF * LU * 40/CSWI
~ DTM * 582 **** Rd8 * 20150101-20150131
~ ENT * 6 * 2J * 34 * 777889999 ~ NM1 * IL * 1 * МЭ ЛПП Е *** Н * 56789 ~ РМР IK H62XX/ОПЛАТА/34567890/45678901 * 5678,90
~ REF * LU * 40/CSWI
~ DTM * 582 **** RD8 * 20141210-20141231
~ RMR IK H62XX/PAY/1234567890/2345678901 ** 6789.01
~ REF ZZ MEDPM/M/6789,01
~ REF * LU * 40/CSWI
~ DTM * 582 **** Rd8 * 20150101-20150131
Что является лучшим способом для разбора этого данные? Есть ли лучший способ, чем использование StreamReader?
Что вы пытались до сих пор? – WeSt
Прямо сейчас я думаю о том, что просто использую StreamReader с System.IO.File, но есть класс TextFieldParser ... может быть, это лучший способ? – TrevorBrooks
Обычно ~ в документе EDI находится в конце каждого сегмента, а не в начале. Но @Heinzi правильно, использование 'String.Split' хорошо работает с сегментами EDI. –