Как прочитать многострочные данные из файла с указанного фрагмента до указанного фрагмента? - C#

Узнай цену своей работы

Формулировка задачи:

Всех с наступающим!

Есть файл с содержанием:
Database: vip_stroitel
Table: material
[5 columns]
+-----------+-------------+
| Column    | Type        |
+-----------+-------------+
| doska     | tinytext    |
| brus      | tinyint(4)  |
| kirpich   | varchar(16) |
| sippanel  | varchar(16) |
| blol      | char(1)     |
+-----------+-------------+
 
Database: vip_stroitel
Table: smeta
[2 columns]
+----------+-------------+
| Column   | Type        |
+----------+-------------+
| ypodpis  | tinyint(2)  |
| npodpis  | varchar(24) |
+----------+-------------+

Нужно прочитать как то все строки (на C#) начиная с фрагментов: "Database: vip_stroitel" до фрагмента: "+-----------+-------------+" и каждую ложить в одну строку и собирать в string list.

Номера строк начальных и конечных фрагментов всегда случайные. Количество таких таблицы всегда разное (Может быть одна а может быть и 10 и более таких таблиц в одном файле).
Как такое лучше реализовать можно? интересуют конкретно ответы с примерами , если можно... ?
1).Эти строки читаем в одну строку: 1 строка: "Database: vip_stroitel Table: material [5 columns] +-----------+-------------+ | Column | Type | +-----------+-------------+ | doska | tinytext | | brus | tinyint(4) | | kirpich | varchar(16) | | sippanel | varchar(16) | | blol | char(1) | +-----------+-------------+"  
        
2).А эти строки в новую строку 2 строка: "Database: vip_stroitel Table: smeta [2 columns] +----------+-------------+ | Column | Type | +----------+-------------+ | ypodpis | tinyint(2) | | npodpis | varchar(24) | +----------+-------------+"

Решение задачи: «Как прочитать многострочные данные из файла с указанного фрагмента до указанного фрагмента?»

textual
Листинг программы
static List<string> ReadFile(string path)
{
    var result = new List<string>();
    StringBuilder sb = null;
    using (var reader = new StreamReader(path))
    {
        while (!reader.EndOfStream)
        {
            var line = reader.ReadLine();
            if (line.StartsWith("Database:", StringComparison.InvariantCultureIgnoreCase))
            {
                sb = new StringBuilder();
                sb.AppendLine(line);
            }
            else if (string.IsNullOrWhiteSpace(line))
            {
                result.Add(sb.ToString());
                continue;
            }
            else
                sb.AppendLine(line);
        }
    }
    result.Add(sb.ToString());
    return result;
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.375 из 5
Похожие ответы