0

如何跳过阅读红框处的文件而仅继续阅读蓝框处的文件?我需要对“fileReader”进行哪些调整?

到目前为止,在 SO 用户的帮助下,我已经能够成功跳过前 8 行(第一个红框)并阅读文件的其余部分。但现在我只想阅读蓝色部分。

我正在考虑为每个蓝色块制作一个方法。基本上,如果它的第一个蓝色框跳过前 8 行文件,下一个蓝色框大约 23 行,但结束文件阅读器是我遇到问题的地方。简直不知道用什么。

在此处输入图像描述

private void button1_Click(object sender, EventArgs e)
{
    // Reading/Inputing column values

    OpenFileDialog ofd = new OpenFileDialog();
    if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
    {
        string[] lines = File.ReadAllLines(ofd.FileName).Skip(8).ToArray();
        textBox1.Lines = lines;

        int[] pos = new int[3] {0, 6, 18}; //setlen&pos to read specific colmn vals
        int[] len = new int[3] {6, 12, 28}; // only doing 3 columns right now

        foreach (string line in textBox1.Lines)
        {
            for (int j = 0; j < 3; j++) // 3 columns
            {
                val[j] = line.Substring(pos[j], len[j]).Trim(); 
                list.Add(val[j]); // column values stored in list
            }
        } 
    }
}
4

2 回答 2

1

尝试这样的事情:

using System.Text.RegularExpressions;  //add this using

foreach (string line in lines)
{
    string[] tokens = Regex.Split(line.Trim(), " +");
    int seq = 0;
    DateTime dt;
    if(tokens.Length > 0 && int.TryParse(tokens[0], out seq))
    { 
        // parse this line - 1st type
    }
    else if (tokens.Length > 0 && DateTime.TryParse(tokens[0], out dt))
    {
        // parse this line - 2nd type
    }
    // else - don't parse the line
}

正则表达式拆分很方便打破任何空格,直到下一个标记。Regex" +"表示匹配一个或多个空格。当它发现别的东西时,它就会分裂。根据您的示例,您只想解析以数字或日期开头的行,这应该完成。请注意,我修剪了前导和尾随空格的行,这样您就不会在其中任何一个上拆分并获得空字符串标记。

于 2013-10-10T16:58:47.280 回答
0

我可以看到你想读什么:

  1. Numerics在以(可能后一行)结尾的行之间
  2. 直到以0Total(是零,对吗?)开头的行;
  3. 在以结尾的行之间CURREN
  4. 直到与行1中的第一个符号一致。

应该不难。逐行读取文件。当(1)或(3)发生时,相应地开始生成直到(2)或(4)。

于 2013-10-10T16:25:06.270 回答