gpt4 book ai didi

c# - 解析文本文件的多个部分 C#

转载 作者:太空狗 更新时间:2023-10-29 22:28:29 25 4
gpt4 key购买 nike

首先让我首先感谢大家成为这个网站的一部分,我已经从中获得了很多有用的信息。包括一些基本的文本文件解析到数组,但我现在想更进一步。

我有一个看起来像这样的文本文件

Start Section 1 - foods

apple
bannana
pear
pineapple
orange

end section 1

Start section 2 - animals

dog
cat
horse
cow

end section 2

我想做的是使用一次文件读取将数据从第 1 部分复制到一个名为“foods”的数组中,将第 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 节 - 食物”作为数组元素之一结束。我可以用代码删除它,但是有没有一种简单的方法可以避免这种情况,以便只填充列表项?

干杯,再次感谢所有的帮助。很高兴在多年后重新开始编程。

亚伦

最佳答案

读取行不是问题,请参阅 System.IO.ReadAllLines(fileName) 及其兄弟。

你需要的是一个(非常简单的)解释器:

// totally untested
Dictionary<string, List<string>> sections = new Dictionary<string, List<string>>();
List<string> section = null;

foreach(string line in GetLines())
{
if (IsSectionStart(line))
{
string name = GetSectionName(line);
section = new List<string>();
sections.Add(name, section);
}
else if (IsSectionEnd(line))
{
section = null; // invite exception when we're lost
}
else
{
section.Add(line);
}
}


...
List<string> foods = sections ["foods"];

关于c# - 解析文本文件的多个部分 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5796844/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com