我需要能够逐行读取文本文件,并在以某个文本开头时获取该行的内容,但是它可能并不总是存在,这会使我返回null并影响我的datagridview。
我想创建一个方法,当它看到第一行(source:always there)时读取块中的数据并读取其他行,如果该行不存在,则将与之关联的变量设置为“”。
例如,文本文件将是
来源:C:\
MRU:1
MRU时间:12/12/2013
来源:C:\
MRU:2
MRU时间:2013年12月13日
来源:C:\
MRU时间:12/10/2013
//注意没有MRU
以下是我用来获取该行的代码,如果它包含字符串:
String line = file.ReadLine();
if (line.StartsWith("source"))
{
richTextBox1.AppendText((line) + Environment.NewLine);
}
if (line.Contains("MRU"))
{
richTextBox1.AppendText((line) + Environment.NewLine);
}
if (line.Contains("MRU time"))
{
richTextBox1.AppendText((line) + Environment.NewLine);
}
答案 0 :(得分:0)
这是一个控制台应用程序,可以完全满足您的需求。只需改变它以满足您的需求。你的主要问题是你没有空检查。这也包含在较小的功能中,所以它更清洁(至少对我而言)
static void Main(string[] args)
{
ReadFile();
}
private static void ReadFile()
{
StreamReader SR = new StreamReader(@"C:\Users\bharrison\Desktop\test.txt");
Console.WriteLine("Reading file");
while (!SR.EndOfStream)
{
string ReturnedValue = AnalyzeString(SR.ReadLine());
Console.WriteLine(ReturnedValue);
}
Console.ReadLine();
}
private static string AnalyzeString(string line)
{
string TempLine = line;
if (TempLine != null && TempLine != "")
{
if (TempLine.Contains("source"))
{
return TempLine;
}
if (TempLine.Contains("MRU"))
{
return TempLine;
}
if (TempLine.Contains("MRU Time"))
{
return TempLine;
}
}
else
{
return " ";
}
return " ";
}