用#"条件"读取c#中的行

时间:2015-04-16 10:26:53

标签: c# .net vb.net

我有一个小问题..

我有一个简单的txt文件,其中包含一些行,但我在努力: 文本文件通过示例链接到3个方法:

方法1调用:“callMath”,2:“callFrench”和3:“callDutch”。

文本文件通过示例看起来像这样:

math_tafels_question1

dutch_dt_question1

french_vocab_question1

math_tafels_question2

dutch_dt_question2

french_vocab_question2

等等。

我的问题是有类似子串命令的东西,如果我调用方法“callMath”它只读取以“math”开头的行吗?如果我调用方法“callFrench”它只读取以“french”开头的行?

你可能会说他们按照10或者其他东西对它们进行排序,但事情是有些问题会被删除,并且会有一些问题被添加,所以我永远不知道问题的确切行号..

希望有人能帮助我吗?;)

2 个答案:

答案 0 :(得分:3)

这看起来不像是一个经过深思熟虑的文件格式,但我想你将不得不忍受它。

虽然你想做什么是微不足道的:

var relevantLines = File.ReadLines(filename)
                        .Where(l => l.StartsWith("math_"));

这会为您IEnumerable<string>提供filename中以“math _”开头的所有行。

另请参阅What's the fastest way to read a text file line-by-line?How to check if a word starts with a given character?

答案 1 :(得分:0)

您可能正在寻找StartsWith()方法。以下是您在场景中使用它的方法:

using (var reader = new System.IO.StreamReader(@"C:\yourfile.txt"))
{
    while (!reader.EndOfStream)
    {
        var line = reader.ReadLine();
        if (line.StartsWith("math_"))
        {
            // do something
        }
    }
    reader.Close();
}

然后,您可以将匹配的行放在数组中,并使用callMath()方法或类似方法返回它们。