如何在文本文件中删除特定符号#的行开头

时间:2012-09-29 11:38:22

标签: .net regex c#-4.0 windows-forms-designer

我正在处理简单的应用程序,它选择文件并读取该文本文件,我想删除所有以`#comments行开头的行,这里是代码

 private void button1_Click(object sender, EventArgs e)
        {
            try
            {

                OpenFileDialog fdlg = new OpenFileDialog();
                fdlg.Title = ".txt File Detector";
                fdlg.InitialDirectory = @"c:\";
                fdlg.Filter = "txt files (*.txt)|*.txt";
                fdlg.FilterIndex = 2;
                fdlg.RestoreDirectory = true;
                if (fdlg.ShowDialog() == DialogResult.OK)
                {
                    input = fdlg.FileName;
                    textBox1.Text = fdlg.FileName;
                }
            }
            catch (Exception eee)
            {
                MessageBox.Show(eee.ToString());
            }
            string taxt = File.ReadAllText(input);
            string[] lines = new string[100000];
            //string taxt = File.ReadAllText(input);
          while(  taxt != null)
            {

            int count = 0;

                if (taxt.Trim().StartsWith("#") != true)
                {

                    lines[count] = taxt;
                    richTextBox1.Text += lines.ToString();
                    count++;
                }        


            }

我也尝试使用正则表达式作为分隔符,但是对于以#开头的注释行的正则表达式不起作用:

  

“@ ^#”   删除这些注释后,我想存储在arraylist

1 个答案:

答案 0 :(得分:0)

您的代码存在许多问题:

  • 您正在将整个文件读入一个字符串,因此您实际上并没有循环遍历行
  • 您正在循环,而taxt非空,但从不更改其值
  • 您在每次迭代时都会调用string[].ToString,原因不明显

你想要某些东西,如:

richTextBox1.Lines = File.ReadLines(input)
                         .Where(line => !line.TrimStart().StartsWith("#"))
                         .ToArray();

但是,您不应该在UI线程中进行文件处理。你真的想在RichTextBox中显示结果,还是只是为了调试?