Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将纯文本数据转换为托管格式?_C#_Xml_List_Sorting - Fatal编程技术网

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

C# 如何将纯文本数据转换为托管格式?,c#,xml,list,sorting,C#,Xml,List,Sorting,使用C,目标是创建一个工作应用程序,该应用程序将接受文本文件作为输入,读取文本文件,并将该文本文件中的数据段划分为不同的组,这些组包含索引以及在该段第一部分中找到的段名 这可能更像是一个关于如何在纯文本文件中获取数据,将其划分为数据组的各个部分的问题?并以某种托管格式输出文件 文本输入文件有13个字段,然后是一个附加的状态字段,共有14个字段 文本输入文件将有大约1500-2000组数据段,因此将有多达2000个条目被索引,条目名称是第一个字段,即包名称。一部分数据如下所示: Package:

使用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感谢前面的编辑

一个简单的解决方案就是一次读取一行文件,在:处拆分,并将每个文件存储在字典中,字典本身存储在一个包中,并将其添加到列表中。每当您获得关键字包时,创建一个新的包实例并将其添加到列表中。下面的代码可以做到这一点,但不是很有防御性

    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>();
    }
  }

看来这本字典很合适。您所要做的就是将其拆分:我通常不愿意建议在纯文本文件可以使用的情况下使用XML,但是.NET很好地支持将XML数据反序列化为运行时数据结构……太棒了!我把这个代码,它的工作预期谢谢!我所做的是制作一个数组并拆分数据;但我希望找到最新的方法,使用最新的风格来做到这一点。以前从未用过字典。但是它在9K大小的较小文件上运行良好,它可以完美地解析它。我打开了另一个950K,cpu已经处于80-100%的状态好几分钟了。刚查过,还是说没反应。这可能需要几分钟,但现在我想知道它是否需要在GUI上有一些活动监视器。。。