Вытащить данные из TXT в datagridview. C#

137
06 февраля 2021, 04:30

Есть такой файл TXT (картинка ниже). Мне нужно как то сделать так, чтобы в базу DATAGRIDVIEW записывалась строка, у которой начало строки начинается с "041". Проблема заключается в том, что в этом файле, по мимо нужных данных есть и проблемные части как (пример с картинки).

file Version 1, sys
file 047 proc Test procedure file triax dyn_V2_eng.proc.gs base64

Кто может показать кодом, как это можно решить?

Код файла Txt:

    file Version 1, sys 
    file    047 proc    Test procedure file triax dyn_V2_eng.proc.gs    base64
   -
045 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
045-
Answer 1

Как один из вариантов (показываю пример того, как можно поступить, все ошибки и остальное отловите сами).

var items = File.ReadAllLines("file.txt").Where(x=>char.IsDigit(x.FirstOrDefault()))
    .Select(x=>x.Split())
    .Where(x=>x.Length > 1)
    .Select(x=>new{Id = int.Parse(x[0]), Value=x[1]});

Тут мы делаем следующее:

  • Считываем построчно файл, получая в результате массив.
  • Из полученного массива берем все, что начинается с числа (так мы отсечем первые строки).
  • Далее мы каждую строку разбиваем по пробелу.
  • Убираем все, что в результате имеет меньше 1 значения после разбития (уберем строки вида 045-).
  • Остается нам получить желаемый вид. Я лично занес все в анонимный тип, первое значение спарсил в int.

Вывод:

foreach (var item in items.Where(x=>x.Id == 041))
    Console.WriteLine($"[{item.Id:D3}] {item.Value}");

В выводе вы уже сами решайте что и как вам надо, я лишь показал то, как вывести все значения с номером 041. В вашем варианте наверно надо занести это куда то в "базу", "таблицу".

У меня на консоль в итоге выведет следующее:

[041] ACAAMQAAAAABAAAAAAAAAAIAAAAD/////gAAAGQAAAACAAAAZAAAAAH/////AAAAAAAABAwAAAAq
[041] AB4AMQA5ADIALgAxADYAOAAuADEANwA4AC4AMQAwADD/////AAAAZAAAAAP/////AAAAAAAAA/MA
[041] ADEAAAAAAgAAAAAAAAAKAAAAUABkAGUAOgBCAGkAdAB0AGUAIABWAGUAbgB0AGkAbAAgACcATQBh
[041] AAACAAAABkBZAAAAAAAA/////wAAAGQAAAAE/////wAAAAAAAYafAAAAHABCAGEAYwBrAHAAcgBl
[041] ACgAUABvAHIAZQAgAHYAbwBsAHUAbQBlACAAYwBoAGEAbgBnAGUAIAAxAAAAAAMAAAAAAAAAAgAA
[041] AAAAAgAAAAZAJAAAAAAAAP////8AAABkAAAACf////8AAAAGAAAAEgBXAEQAQwAgAGQAeQBuACAA
READ ALSO
Модернизация и плавная прокрутка ScrollViewer

Модернизация и плавная прокрутка ScrollViewer

Столкнулся с такой проблемойЕсть в xaml такая разметка:

113
Не меняется текст UILabel

Не меняется текст UILabel

У меня есть некоторый UILabel titleLabel, который инициализируется в конструкторе, Frame же указывается в LayoutSubview

110
ArrayList to string с пробелами

ArrayList to string с пробелами

Как сделать что бы после каждого слова был пробел но не после последнего? и еще пользуясь случаям хочу спросить касательно строк

92
Mysql помощь при удалении запеси

Mysql помощь при удалении запеси

Как исправить ошибку, чтобы удаление проходило?

105