Чтение блоков текста из файла CSV - vb.net - PullRequest
1 голос
/ 21 октября 2011

Мне нужно проанализировать файл CSV с блоками текста, обрабатываемыми по-разному в соответствии с определенными правилами, например,

userone,columnone,columntwo
userthirteen,columnone,columntwo
usertwenty,columnone,columntwo

customerone,columnone<br>
customertwo,columntwo<br>

singlevalueone
singlevaluetwo

singlevalueone_otherruleapplies
singlevaluethree_otherruleapplies

Каждый блок текста будет сгруппирован, поэтому первые три строки будут проанализированы с использованием определенных правил и так далее. Обратите внимание, что последние две группы имеют только один столбец, но каждая группа должна обрабатываться по-своему.

У меня есть возможность предложить клиенту формат файла, поэтому я думаю предложить следующее.

[group 1]
userone,columnone,columntwo
userthirteen,columnone,columntwo
usertwenty,columnone,columntwo

[group N]
rowN

Вид разделов, подобных файлам INI, выпущенным несколько лет назад. Однако я хотел бы услышать ваши комментарии, потому что я думаю, что должен быть лучший способ справиться с этим.

Я предложил использовать XML, но клиент предпочитает текстовые файлы.

Любые предложения приветствуются.

m0dest0.

Ps. используя VB.net и VS 2008

1 Ответ

1 голос
/ 21 октября 2011

Вы можете использовать группы регулярных выражений, установленные либо в режим строки перечисления, если каждая строка имеет одинаковый формат, либо в многострочный список перечисления, если формат не ограничен одной строкой. Для каждой строки в многострочном режиме вы можете включить \ n в ваш шаблон, чтобы пересечь несколько строк, чтобы найти ваш шаблон. Если он находится в одной строке, вам не нужно включать \ n также известный как перевод строки каретки в ваш шаблон соответствия регулярному выражению.

vb.net, как и многие другие современные языки программирования, имеет обширную поддержку операций группировки. Вы можете использовать индексные группы или именованные группы.

Каждое имя, такое как header1 или как вы хотите его назвать, будет иметь следующий формат: <myname>
См. Эту ссылку для получения дополнительной информации: Как получить доступ к именованным группам захвата в .NET Regex? .

Удачи.

...