Я пытаюсь разобрать файл, который выглядит так:
||Заголовок столбца A ||Заголовок столбца B ||Заголовок столбца C || CRLF |Данные А |Данные Б |Данные C | CRLF |Данные А |Данные Б |Данные C | CRLF
(« CRLF » обозначает разрыв строки)
У меня был код для разбора этого штрафа:
Сначала я анализирую файл в массив строк:
string[] lines = fileString.Split(Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
Затем я анализирую каждую строку в массиве значений данных столбцов,
Сначала анализирую, чтобы получитьиспользуя заголовок:
string Delimiter = "||";
string[] columns = line.Split(new string[] { Delimiter }, StringSplitOptions.RemoveEmptyEntries);
Затем выполните синтаксический анализ остальных строк, используя
string Delimiter = "|";
string[] columns = line.Split(new string[] { Delimiter }, StringSplitOptions.RemoveEmptyEntries);
. Это работало идеально, пока я не нашел запись, которая содержала CRLF внутриполе, таким образом, мой анализ разбился.
Может кто-нибудь придумать хороший способ разбора этих данных ниже и правильно обрабатывать CRLF ?Вот пример:
||Заголовок столбца A ||Заголовок столбца B ||Заголовок столбца C || CRLF |Данные А |Данные Б |Данные C | CRLF |Данные А |Данные B CRLF Продолжение B |Данные C | CRLF
Проблема в том, что когда я делаю начальный анализ для получения массива строк, я получаю здесь 4 строки вместо 3 (потому что последняя строка отображается как две записи в этом массиве.)