所以我有一些.txt文件格式化了我不喜欢的方式。我想读取文件并通过单击GUI中的按钮(或2)重新格式化它。此外,我希望能够通过单击另一个按钮重新保存具有许多选项的文件。另外,如果可能的话,我希望原始文件显示在GUI左侧的富文本框中,一旦单击格式按钮,它将在我的GUI右侧显示新文本一个单独的富文本框。
所以我目前有一个正常运行的“打开文件”按钮,“保存文件”按钮和“清除文本”按钮。但是,我需要一个“格式文本”按钮(除非我们可以将打开文件按钮和格式文本按钮组合成一个按钮!)...
这是文件进入时的样子。 http://i.stack.imgur.com/mlSMm.png
这就是我点击格式时想要的样子。 http://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文件以删除除(不包括)标有“level”,“number ref”,“component item”,“description”的列以外的所有内容。这个意思,一切都在“---”之下,直到我打到另一个“---”。在我击中另一个“---”后,我需要抓住与上面相同的列。这更有意义吗?我希望它看起来的例子是在第二个链接。
答案 0 :(得分:2)
通过正则表达式运行文本,该表达式选择感兴趣的行:这些行:
foreach (string line in File.ReadAllLines("filename"))
{
Match m = Regex.Match(line, @"^\d+\s+[\d\w]+\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/