C # - Разобрать / отформатировать .txt файл - PullRequest
0 голосов
/ 22 июня 2011

Итак, у меня есть некоторые файлы .txt, которые были отформатированы таким образом, который мне не нравится.Я хочу прочитать файл и переформатировать его одним нажатием кнопки (или 2) в моем графическом интерфейсе.Кроме того, я хотел бы иметь возможность восстановить файл с большим количеством опций одним нажатием другой кнопки.Кроме того, если это возможно, я бы хотел, чтобы исходный файл отображался в расширенном текстовом поле с левой стороны моего графического интерфейса, и после нажатия кнопки форматирования новый текст будет отображаться с правой стороны моего графического интерфейса вотдельное расширенное текстовое поле.

Таким образом, в настоящее время у меня есть функционирующая кнопка «Открыть файл», кнопка «Сохранить файл» и кнопка «Очистить текст».Однако мне нужна кнопка «Формат текста» (если только мы не можем объединить кнопку «Открыть файл» и кнопку «Формат текста» в одну кнопку!) ...

Вот как будет выглядеть файл, когда он появитсядюйма http://i.stack.imgur.com/mlSMm.png

И вот как я хочу, чтобы это выглядело, когда я нажимаю формат.http://i.stack.imgur.com/1IzKF.png

У меня также есть графический интерфейс, который я сделал, и чтобы открыть и сохранить файл, у меня есть следующий код:

    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);
       }
    }

Хорошо, поэтому актуальный вопрос:

Как мне отформатировать входящий текстовый файл, чтобы удалить все, кроме (не включая) столбцы с надписями «уровень», «номер ссылки», «элемент компонента», «описание».Это означает, что все под "---", пока я не нажму другое "---".После того, как я нажму еще одну «---», мне нужно взять те же столбцы, что и выше.Это имеет больше смысла?Пример того, как я хочу, чтобы это выглядело, находится во второй ссылке.

1 Ответ

2 голосов
/ 22 июня 2011

Проведите текст через регулярное выражение, которое выделяет интересующие вас строки Что-то вроде этих строк:

        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 /

...