所以我有一些.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/