我必须阅读一个文本文件,如果行包含“ .engineering $ name”,则查找包含“ .default”的行,并对该行进行一些操作。我需要继续读取行,直到在一组行中找到“ .default”为止。 (这个设置就像,直到我点击下一个“ .engineering”)。对于下一个“ .engineering $ name”,再次像这样循环循环
注意: “ .engineering”关键字是固定字符串,$ name动态读取, “ .default”是固定字符串,
我能够做的第一部分是读取包含“ .engineering $ name”的行 我无法获得下一部分的逻辑,找到“ .default”,直到遇到下一个“ .engineering”
在C#中寻找逻辑或该逻辑的代码。谢谢
代码:
using (var stream = new FileStream(path, FileMode.Open, FileAccess.Read))
using (var reader = new StreamReader(stream))
{
while (!reader.EndOfStream)
{
string[] def_arr = null;
var line1 = reader.ReadLine();
if (line1.Contains(".engineering " + name + " ") && !reader.EndOfStream)
{
var nextLine = reader.ReadLine(); // nextLine contains ".default"
def_arr = nextLine.Split(' ');
def_val = def_arr[1].Replace("\"", "");
port_DefaultValues.Add(name + ", " + def_val);
}
}
}
var nextLine是包含“ .default”的行。我编码的过程很艰辛,发现“ .engineering”的下一行具有“ .default”。但是并非总是如此。 “ .default”在到达下一个“工程”之前可以在任何行中。
我希望问题陈述清楚。
答案 0 :(得分:0)
尝试此代码-
using (var stream = new FileStream(path, FileMode.Open, FileAccess.Read))
using (var reader = new StreamReader(stream))
{
while (!reader.EndOfStream)
{
string[] def_arr = null;
var line1 = reader.ReadLine();
if (line1.Contains(".engineering " + name + " ") && !reader.EndOfStream)
{
var nextLine = reader.ReadLine(); // nextLine contains ".default"
while (!nextLine.Contains(".default") && !reader.EndOfStream)
{
nextLine = reader.ReadLine();
}
def_arr = nextLine.Split(' ');
def_val = def_arr[1].Replace("\"", "");
port_DefaultValues.Add(name + ", " + def_val);
}
}
}
我刚刚添加了一个循环,该循环将继续读取下一行,直到遇到.default
。请记住,如果在文件的其余部分中找不到该异常,则会引发异常。