StreamReader с текстовым файлом с разделителями табуляции

У меня есть аналогичное требование к этому сообщению... Заполнить Gridview во время выполнения с помощью текстового файла

Где я хочу прочитать текстовый файл с помощью StreamReader и заполнить DataTable данными в файле, однако я не уверен, как реализовать split() с вкладкой.

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


person Stuart    schedule 19.02.2013    source источник
comment
ср.ReadLine().Разделить(\t); используется в vb не уверен в этом.   -  person Neha    schedule 19.02.2013
comment
Поля разделены табуляцией, как разделены строки? По новой строке?   -  person Ivan G    schedule 19.02.2013
comment
новые строки - это новые строки. это довольно простой и стандартный макет файла edi, который я пытаюсь прочитать и отобразить конечному пользователю.   -  person Stuart    schedule 19.02.2013


Ответы (3)


Вы можете попробовать это:

        DataTable table = new DataTable();
        table.Columns.Add("col1");
        table.Columns.Add("col2");
        table.Columns.Add("col3");

        var lines = File.ReadAllLines(@"Data.txt").ToList();
        lines.ForEach(line => table.Rows.Add(line.Split((char)9)));

Я предположил, что строки разделены новой строкой (в этом случае можно использовать метод ReadAllLines). Число 9 — это значение ASCII для символа горизонтальной табуляции, которое используется для разделения строки. ForEach — это метод, который можно использовать в общих списках, он используется вместо цикла foreach.

person Ivan G    schedule 19.02.2013
comment
Спасибо, сегодня попробую и проверю, как у меня дела. Очень признателен! - person Stuart; 19.02.2013

Экранирующий символ для вкладки в С# — \t, поэтому для чтения файла и разделения каждой строки на вкладке я бы использовал

var path = "path to file";
using (StreamReader sr = new StreamReader(path))
{
    while (sr.Peek() >= 0)
    {
        //Reads the line, splits on tab and adds the components to the table
        table.Rows.Add(sr.ReadLine().Split('\t'));
    }
}
person Martin McGirk    schedule 19.02.2013

Если у вас есть только символы табуляции, вы можете использовать Split('\t'), но если табуляции представляют собой пробелы, вы можете использовать регулярные выражения

person Benny    schedule 19.02.2013