Есть txt файл со следующей информацией:
2 дно, 1800, непроницаемая
Вторая платформа, 3500, проницаемая
Верхняя палуба, 7500, непроницаемая
Нужно разобрать данные в массив/массивы, но сохранив их принадлежность - то есть не перемешивая (2 дно, 1800, непроницаемая), так как каждая строка описывает высоту и свойство конкретного объекта. Считать построчно, каждое свойство объекта разделено запятыми, все они описывают название, положение и проницаемость объекта палуба. Как это организовать?
Можно считать весь файл в память, если он маленький:
//1. считать все данные в память, если файл не большой
var fileData = File.ReadAllLines("тут путь к файлу");
foreach (var row in fileData)
{
var items = row.Split(",");
}
Можно считывать построчно:
//2. считать построчно
using (StreamReader sr = new StreamReader("тут путь к файлу"))
{
while (sr.Read() > 0)
{
String row = sr.ReadLine();
var items = row.Split(",");
}
}
И в том и в другом случае в объекте row будет содержаться массив из 3х строк. Далее его уже можно преобразовать в требуемый типизированный объект.
Еще можно воспользоваться сторонними библиотеками для парсинга, например CsvHelper. Но возможно это лишнее усложнение в вашей ситуации.
Этот формат данных называется CSV (Comma separated Value). Он довольно широко используется.
Вот здесь есть простой код с использованием внутренней библиотеки Visual Basic(это родная библиотека Visual Studio) которая считывает файл в двухмерный массив. Внешний массив - массив строк. Каждый внутренний массив - массив значений разделенных комой.
Как просто работать с / открыть / изменить / сохранить Excel / CSV файлы
Сложность чтения CSV заключается в том, что некоторые ячейки могут иметь внутри себя знак сепарации(кома в даном случае) и в таком случае вся ячейка должна обрамлятся в кавычки.
Другая сложность заключается в возможности того, что каждая ячейка внутри себя так же может иметь переход на следующую строку.
Так что в принципе я не советую мучится и делать собственную реализацию велосипеда CSV Reader-a с собственными костылями, а воспользоватся готовым решением. Тем более, что готовое решение является частью стоковых библиотек Visual Studio. Пример кода чтения в двухмерный массив можно найти по ссылке выше.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
У меня есть ListBox, в котором каждый Item представляет собой Grid из трех колонокПервая и последняя колонка имеют ширину 50, а в средней лежит TextBlock,...
Имеется E'нумератор помеченный аттрибутом [Flags]:
При написании библиотеки, код которой валиден как дляNET Framework, так и для