3

我想在 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);  

            }
4

2 回答 2

5

File.ReadLines()您可以使用方法和 LINQ一次检查所有行:

var firstAnderlecht = File.ReadLines(textBox1.Text).FirstOrDefault(s => s.Contains("Anderlecht"));
if (firstAnderlecht != null) {
    label5.Text = firstAnderlecht;
}

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

于 2012-11-19T11:33:34.517 回答
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

于 2012-11-19T11:50:19.853 回答