0

我正在开发简单的应用程序,它选择文件并读取该文本文件,我想删除所有以`#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 中

4

1 回答 1

0

您的代码存在许多问题:

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

你想要这样的东西

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

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

于 2012-09-29T11:50:25.737 回答