【问题标题】:How can I possibly iterate through data after n:th row in a text file?如何在文本文件中的第 n 行之后遍历数据?
【发布时间】:2015-01-03 01:44:42
【问题描述】:

我有一个文本文件,我认为我需要在其中迭代以获取所有数据。 这是文本文件的构造方式: 从第 1-9 行有关于将收到发票的公司的信息。 第 10 行显示项目的数量。 例如,如果第 10 行是 2,则以下行如下所示:

11 牛奶“第一项的描述”
12 4“项目1的数量”
13 25“价格”
14避孕套“第二项说明”
15 10 "第 2 项的数量"
16 2.5“价格”

我现在要做的是逐步浏览文件,然后当我在第 10 行时,以某种方式迭代项目的数量,在这种情况下为 2,然后在上面的文本文件。这是一个五步程序。
算法:

  1. 逐步读取文本文件

  2. 添加列表中的每一行

  3. 将整数计数增加 1

  4. 验证 count 是否等于 9(项目数量之前的行)

  5. 如果 count 为 9,则遍历该行显示的数据,在本例中为 2。

我未能在我的算法中建立数字 5。下面是解释成代码的算法:

 fstream = new FileStream(file, FileMode.Open);
            sReader = new StreamReader(fstream);
            invoice = new Invoice();
            List<string> s = new List<string>();
            List<Items> itms = new List<Items>();
            while ((line = sReader.ReadLine()) != null)
            {
                s.Add(line);
            }
            for (int i = 0; i < s.Count; i++)
            {
                count++;
                //Step 4
                if (count == 9)
                {
                  //Step 5. 
                }

我如何证明应该有两个对象,一个以第 11-13 行作为参数(s[11]、s[12]、s[13]),另一个以 14-16 行作为参数?

【问题讨论】:

    标签: c# file


    【解决方案1】:

    这样的事情怎么样:

    var lines = File.ReadAllLines( file );          
    // check number of lines here, make sure there are at least nine and
    // that the count is a multiple of three
    for( int i = 9; i < lines.Length; i += 3 )
    {
        string desc = lines[i + 0],
               qty = lines[i + 1],
               price = lines[i + 2];
        // do work here (step 5)
    }
    

    还有更好的方法可以做到这一点,但这应该可以帮助您入门。

    【讨论】:

      猜你喜欢
      • 2015-07-13
      • 2014-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多