过滤字符串c#中的一行

时间:2012-11-19 11:29:15

标签: c#

我想在c#中读取.txt文件,并从字符串中过滤掉一行,只显示该行。如果匹配在第一行,我使用streamreader.ReadLine得到一个好的输出。但如果它在第二行,我需要过滤它。 (我创建了一个ReadLine循环吗?) 提前致谢

        private void comboBox3_SelectedIndexChanged(object sender, EventArgs e)
    {

        StreamReader sr = new StreamReader(textBox1.Text);
        string BoxLM1 = sr.ReadLine();

        if (comboBox3.Text == "Anderlecht")
        {
            if (BoxLM1.Contains("Anderlecht"))
            {
            label5.Text = BoxLM1;
            }

            else
            {
                string BoxLM2 = sr.ReadToEnd();



                    MessageBox.Show(BoxLM2);  

            }

2 个答案:

答案 0 :(得分:5)

您可以使用File.ReadLines()方法和LINQ:

一次检查所有行
var firstAnderlecht = File.ReadLines(textBox1.Text).FirstOrDefault(s => s.Contains("Anderlecht"));
if (firstAnderlecht != null) {
    label5.Text = firstAnderlecht;
}

ReadLines从文件中生成可枚举的行; FirstOrDefault方法允许您在没有循环的情况下将条件应用于文件的所有行,并选择条件适用的第一行。

答案 1 :(得分:0)

如果您正在操作大文件,我建议使用此迭代器:

private static IEnumerable FileIterator(String filePathe)
    {
        using (StreamReader streamReader = new StreamReader(filePathe))
        {
            String line;
            while ((line = streamReader.ReadLine()) != null)
            {
                yield return line;
            }
            yield break;
        }
    }

它将阻止将完整文件加载到RAM