读取不同索引处的行

时间:2013-04-28 02:29:33

标签: c# indexing readlines

这是我在一起搜索文本文件中的数字的一些代码。它对我正在尝试做的事情很有用。现在它找到7个位置,我需要读取7个不同索引的行。什么是开始这个​​的最佳方式。谢谢,这是在C#。

private void button1_Click(object sender, EventArgs e)
    {
        richTextBox1.Text = "";

        using (OpenFileDialog dlgOpen = new OpenFileDialog())
        {
            //long count = 0; string line;
            //bool start = false;
            //string line;
            List<String> LinesFound = new List<string>();
            // Available file extensions 
            dlgOpen.Filter = "All files(*.*)|*.*";
            // Initial directory 
            dlgOpen.InitialDirectory = "C://bin";
            // OpenFileDialog title 
            dlgOpen.Title = "Load";
            // Show OpenFileDialog box 
            if (dlgOpen.ShowDialog() == DialogResult.OK)
                textBox1.Text = dlgOpen.FileName;

            {
                string str = System.IO.File.ReadAllText(dlgOpen.FileName);
                Regex reg = new Regex("333333");
                Match sat = reg.Match(str);
                while (sat.Success)
                {
                    richTextBox1.Text += (sat.Index + "                    "); //shows index where 333333 is
                    sat = reg.Match(str, sat.Index + sat.Length);
                      {

                              {


                              }
                          }
                    }
                }
            }
        }

1 个答案:

答案 0 :(得分:0)

您可以使用ReadAllLines而不是ReadAllText,并逐个匹配每一行,使用int []变量来存储所有匹配的行索引。

var lines = File.ReadAllLines(AppDomain.CurrentDomain.BaseDirectory + "/files/file.txt");

            Regex reg = new Regex("333333");
            string str;
            for(int i =1; i<lines.Length;i++)
            {
                str = lines[i];
                Match sat = reg.Match(str);
                if (sat.Success)
                {
                    richTextBox1.Text += (i + 1 +"                    "); //shows index where 333333 is

                }
            }