парсинг нескольких разделов текстового файла C #

Прежде всего позвольте мне поблагодарить вас всех за то, что вы являетесь частью этого сайта, я уже получил от него так много полезной информации. включая базовый анализ текстовых файлов в массивах, но теперь я хочу пойти еще дальше.

У меня есть текстовый файл, который выглядит примерно так

Start Section 1 - foods

apple  
bannana  
pear   
pineapple  
orange  

end section 1

Start section 2 - animals

dog  
cat  
horse  
cow  

end section 2 

. Я хочу использовать одно чтение файла, скопировать данные из раздела 1 в массив под названием «food», а раздел 2 в и массив под названием «animals»

, теперь я могу заставить его работать, используя новый цикл для каждого раздела, каждый раз закрывая и снова открывая файл, повторяя цикл до тех пор, пока не найду нужный раздел, и создаю массив.

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

, поэтому мой текущий код -

List<string> typel = new List<string>();  

using (StreamReader reader = new StreamReader("types.txt")) // opens file using streamreader
        {

            string line; // reads line by line in to varible "line"
            while ((line = reader.ReadLine()) != null) // loops untill it reaches an empty line
            {
                typel.Add(line); // adds the line to the list varible "typel"
                               }

        }

        Console.WriteLine(typel[1]);  // test to see if list is beeing incremented
        string[] type = typel.ToArray(); //converts the list to a true array 
        Console.WriteLine(type.Length); // returns the number of elements of the array created. 

, который предназначен для простого текстового файла без разделов, только со списком значений, использование списка казалось хорошим способом справиться с неизвестной длиной массивов.

Мне также было интересно, как работать с первым значением.

например, если я делаю

while ((line = reader.ReadLine()) != Start Section 1 - foods)  
{  
}  
while ((line = reader.ReadLine()) != end Section 1)   
{  
foods.Add(line);  
}  
...  
....

, я получаю «начало раздела 1 - продукты» как один из элементов массива. Я могу удалить его с помощью кода, но есть ли простой способ избежать этого, чтобы заполнялись только элементы списка?

Ура и еще раз спасибо за помощь. Приятно вернуться к программированию спустя много лет.

Аарон

5
задан Henk Holterman 26 April 2011 в 22:06
поделиться