C#-解析/格式化.txt文件



所以我有一些.txt文件的格式是我不喜欢的。我想通过点击GUI中的按钮(或2)来读取文件并重新格式化它。此外,我希望能够通过单击另一个按钮重新保存具有许多选项的文件。此外,如果可能的话,我希望原始文件显示在GUI左侧的富文本框中,一旦单击格式按钮,它将在GUI右侧的一个单独的富文本盒中显示新文本。

所以我目前有一个功能正常的"打开文件"按钮,"保存文件"按钮和"清除文本"按钮。然而,我需要一个"格式化文本"按钮(除非我们可以将打开文件按钮和格式化文本按钮组合成一个按钮!)。。。

以下是文件进入时的样子。https://i.stack.imgur.com/mlSMm.png

这就是我希望它在点击格式时的样子。https://i.stack.imgur.com/1IzKF.png

我还制作了一个GUI,为了打开和保存文件,我有以下代码:

    private void openFileButton_Click(object sender, EventArgs e)
    {
       OpenFileDialog openFile = new OpenFileDialog();
       openFile.DefaultExt = "*.txt";
       openFile.Filter = ".txt Files|*.txt";
       openFile.InitialDirectory = "C:\";
       openFile.RestoreDirectory = true;
       try
       {
          if(openFile.ShowDialog() == DialogResult.OK && openFile.FileName.Length > 0)
          {
          openedTextRichTextBox.LoadFile(openFile.FileName, RichTextBoxStreamType.PlainText);
          }
          else
             throw new FileNotFoundException();
       }
       catch (Exception ex)
       {
           MessageBox.Show(ex.Message);
       }
    }
    private void saveFileButton_Click(object sender, EventArgs e)
    {
       SaveFileDialog saveFile = new SaveFileDialog();
       saveFile.DefaultExt = "*.txt";
       saveFile.Filter = ".txt Files|*.txt";
       saveFile.InitialDirectory = "C:\";
       saveFile.RestoreDirectory = true;
       try
       {
          if(saveFile.ShowDialog() == DialogResult.OK && saveFile.FileName.Length > 0)
          {
          formattedTextRichTextBox.LoadFile(saveFile.FileName, RichTextBoxStreamType.PlainText);
          }
          else
             throw new FileNotFoundException();
       }
       catch (Exception ex)
       {
           MessageBox.Show(ex.Message);
       }
    }

好的,所以实际的问题是:

如何格式化传入的txt文件以删除除(不包括)标记为"级别"、"编号参考"、"组件项"、"说明"的列之外的所有内容。这个意思是,一切都在"---"下,直到我再打一个"---"。在我点击另一个"---"之后,我需要抓取与上面相同的列。这更有意义吗?我希望它看起来如何的例子在第二个链接中。

通过一个正则表达式运行文本,该表达式可以挑选出感兴趣的行

        foreach (string line in File.ReadAllLines("filename"))
        {
            Match m = Regex.Match(line, @"^d+s+[dw]+s+d+s+.{24}");
            if (m.Success)
            {
                string output = m.Value;
                // do something with output, for example write to a file
            }
        }

如果您不熟悉正则表达式,您应该研究它们,例如:http://www.regular-expressions.info/

相关内容

  • 没有找到相关文章