和我们一起(很长的帖子),
如何跳过阅读红色框中的文件才能继续阅读蓝色框中的文件?我需要对'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
}
}
}
}
答案 0 :(得分: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
}
正则表达式拆分可以在任何空格上打破,直到下一个标记。正则表达式" +"
表示匹配一个或多个空格。它在找到别的东西时会分裂。根据您的示例,您只想解析以数字或日期开头的行,这应该完成。请注意,我修剪了前导和尾随空格的行,这样就不会拆分任何这些空格并获得空字符串标记。
答案 1 :(得分:0)
我可以看到你想要阅读的内容:
Numerics
结尾的行(可能在一行之后)0Total
开头的行(是零,对吧?); CURREN
1
作为行中的第一个符号。不应该很难。逐行阅读。当(1)或(3)发生时,相应地开始产生直到(2)或(4)。