3

C# で .txt ファイルを読み取り、文字列から行をフィルター処理して、その行のみを表示したいと考えています。一致が最初の行にある場合、streamreader.ReadLine を使用して適切な出力を取得します。しかし、それが 2 行目にある場合は、フィルタリングする必要があります。(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 に答える