如何读取块中的文本文件以返回特定行

时间:2013-03-13 19:35:43

标签: c# if-statement datagridview struct line

我需要能够逐行读取文本文件,并在以某个文本开头时获取该行的内容,但是它可能并不总是存在,这会使我返回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);
        }

1 个答案:

答案 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 " ";
    }