如何将纯文本数据转换为托管格式?

时间:2012-06-30 17:42:29

标签: c# xml list sorting

使用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:

等...

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

ps感谢上一次编辑

1 个答案:

答案 0 :(得分:0)

一个简单的解决方案就是一次读取一行文件,在“:”处拆分并将每个文件存储在Dictionary<string, string>中,Package本身存储在List<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>(); } } 实例并将其添加到列表中。下面的代码可以解决问题,但不是非常防御性的编码。

{{1}}