0

使用 C#,目标是创建一个工作应用程序,该应用程序将接受一个文本文件作为输入,读取它,并将该文本文件中的数据部分分成不同的组,其中包含索引 # 和部分的名称可在本节的第一部分找到。

这可能更多是关于如何在纯文本文件中获取数据,将其分成数据“组”的部分的问题?并以某种托管格式输出文件。

文本输入文件有 13 个字段,然后是状态的附加字段,共 14 个字段。

文本输入文件将有大约 1500 - 2000 组数据段,因此将有多达 2000 个索引条目,条目名称是第一个字段,即“包名称”。一段数据会是这样的:

Package:  horse
Version:  1.2.3
Depends:  libgcc
Provides:
Status:  user installed
Other:   other info
Other2:  other info 2

Package:  cow
Version:  2.3.4
Depends:  libhay
Provides: milk
Status:   user installed
Other:    white with black spots
Other2:   has a red cow bell around her neck

Package:  tractor
Version:  0.9.22
Depends:  diesel
Provides:

ETC...

如何读取数据并将其放入适当的表或条目或数据集中?

ps 感谢之前的编辑

4

1 回答 1

0

一个简单的解决方案就是一次读取一行文件,在“:”处拆分并将每个文件存储在一个Dictionary<string, string>本身存储在 a 中Package并将其添加到 aList<Package>中。每当您获得关键字“Package”时,创建一个新Package实例并将其添加到列表中。下面的代码可以解决问题,但不是非常防御性编码。

    static void Main(string[] args)
    {
      string line;
      List<Package> packages = new List<Package>();
      Package package = null;
      StreamReader file = new System.IO.StreamReader("TextFile1.txt");
      while ((line = file.ReadLine()) != null)
      {
        string[] pair = line.Split(new string[] { ": " }, StringSplitOptions.None);
        if (pair.Length != 2)
          continue;
        if (pair[0] == "Package")
        {
          package = new Package();
          packages.Add(package);
        }
        package.Values.Add(pair[0].Trim(), pair[1].Trim());
      }
      file.Close();
      Console.WriteLine(packages.Count);
      foreach (Package p in packages)
      {
        Console.WriteLine(p);
        foreach (KeyValuePair<string, string> pair in p.Values)
          Console.WriteLine("{0}={1}", pair.Key, pair.Value);
      }
      Console.ReadLine();
    }
  }

  class Package
  {
    public Dictionary<string, string> Values;
    public Package()
    {
      Values = new Dictionary<string, string>();
    }
  }
于 2012-07-01T08:00:30.777 回答