С# Получение данных из файла .txt, разделенных точкой с запятой

Например, у меня есть файл .txt с этим содержимым:

Hello;Test;StackOverflow;I live here
Hi;NoTest;StackOverflow;I don't live here

и так далее..

Теперь я хотел бы прочитать txtFile, но я не хочу читать «всю» строку или что-то еще ... только до следующей точки с запятой ... до конца строки ...

одна StringVariable для одного слова в txtFile, но только для одной строки.

Как я мог этого добиться?


person eMi    schedule 30.08.2011    source источник
comment
Почему вы не хотите читать всю строку? Очереди непозволительно длинные? то есть сотни мегабайт?   -  person Binary Worrier    schedule 30.08.2011
comment
Ну, вам всегда нужно читать/искать точку с запятой. Так почему бы не прочитать всю строку, а затем разделить ее?   -  person RvdK    schedule 30.08.2011


Ответы (1)


Вы можете читать текст построчно следующим образом:

var streamReader = new StreamReader(new FileStream("c:\\file.txt"));
var line = streamReader.ReadLine();

var values = line.Split(';');

а затем прочитайте любое значение из строки следующим образом:

var value = values[2];

И если вы хотите перебирать эти значения, вы можете сделать это следующим образом:

var streamReader = new StreamReader(new FileStream("c:\\file.txt"));

while(!streamReader.EndOfStream)
{
    var line = streamReader.ReadLine()
    var values = line.Split(';');
    for(var i = 0; i < line.Length; i++)
        Console.WriteLine(values[i]); //example usage
}

streamReader.Dispose();
person ŁukaszW.pl    schedule 30.08.2011
comment
спасибо 4 ответ, я попробую! Если это сработает, я отмечу ответ как ответ - person eMi; 30.08.2011
comment
Я написал этот код из затылка, поэтому, если что-то не скомпилируется, дайте мне знать. - person ŁukaszW.pl; 30.08.2011
comment
Здесь есть пара небольших проблем: ваш цикл for увеличивает line, а не i, и есть опечатка в Lenght. Кроме того, я бы рекомендовал использовать using вокруг StreamReader, чтобы он автоматически удалялся, и я считаю, что проверка streamReader.EndOfStream - это немного лучший способ проверить, достигли ли вы конца файла. - person Daniel B; 30.08.2011
comment
Отличные предложения .. спасибо .. как я уже сказал .. Я делал это решение сразу :) - person ŁukaszW.pl; 30.08.2011