0

我需要能够逐行读取文本文件并在它以某个文本开头时获取该行的内容,但是它可能并不总是存在,这给了我空返回并影响了我的datagridview。

我想创建一个方法,当它看到第一行(来源:总是在那里)并在其他行中读取时,它将读取块中的数据,如果该行不存在,则将与其关联的变量设置为“”。

例如,文本文件将是

来源:C:\
MRU:1
MRU 时间:12/12/2013

来源:C:\
MRU:2
MRU 时间:13/12/2013

来源:C:\
MRU 时间:12/10/2013
//notice no 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);
        }
4

1 回答 1

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 " ";
    }
于 2013-03-18T16:26:58.913 回答