Отладка кода форматирования - PullRequest
0 голосов
/ 09 июня 2010

Я пытаюсь отладить свой код здесь:

 private void CheckFormatting()
    {
        StringReader objReaderf = new StringReader(txtInput.Text);
          List<String> formatTextList = new List<String>();

                 do
                     {
                         formatTextList.Add(objReaderf.ReadLine());
                     } 
                 while (objReaderf.Peek() != -1);

                 objReaderf.Close();
                 for (int i = 0; i < formatTextList.Count; i++)
                 {
                     if (!Regex.IsMatch(formatTextList[i],
                         "G[0-9]{2}:[0-9]{2}:[0-9]{2}:[0-9]{2} JG[0-9]{2}"))
                     {
                         MessageBox.Show("Line " + formatTextList[i] + " is not formatted correctly.",
                             "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                         break;
                     }
                     else
                     {
                         this.WriteToFile();
                         MessageBox.Show("Your entries have been saved.", "Saved",
                             MessageBoxButtons.OK, MessageBoxIcon.Information);
                     }
                 }
    }

, что он должен сделать, это проверить каждую строку в списке.если один из них не отформатирован правильно, то прервите цикл и отобразите окно сообщения, если все строки отформатированы правильно, он должен вызвать метод WriteToFile.Однако при тестировании с использованием набора входных данных, которые были и были неправильно отформатированы, он вызывал метод WriteToFile, прежде чем отображал сообщение об ошибке и прерывал цикл.Кто-нибудь выяснит почему?Для вас есть несколько точек повторения:)

Заранее спасибо

Примеры:

Они правильно отформатированы:

G20:49:02:10 JG07
G37:84:73:20 JG48

Это неправильно отформатированный:

G47:29:js:20 JG29

Если пользователь вводит

G20:49:02:10 JG07
G47:29:js:20 JG29
G37:84:73:20 JG48

, тогда код должен проверить первую строку, увидеть, что он правильно отформатирован, перейти ко второй строке, увидеть, чтонеправильно отформатирован и прерывает цикл и отображает сообщение об ошибке.

Ответ

   private void CheckFormatting()
    {
        StringReader objReaderf = new StringReader(txtInput.Text);
          List<String> formatTextList = new List<String>();

                 do
                     {
                         formatTextList.Add(objReaderf.ReadLine());
                     } 
                 while (objReaderf.Peek() != -1);

                 objReaderf.Close();

                 bool FlagCheck = true;

                 for (int i = 0; i < formatTextList.Count; i++)
                 {
                     if (!Regex.IsMatch(formatTextList[i],
                         "G[0-9]{2}:[0-9]{2}:[0-9]{2}:[0-9]{2} JG[0-9]{2}"))
                     {
                         FlagCheck = false;
                         break;
                     }
                 }
                 if (FlagCheck == true)
                 {
                     this.WriteToFile();
                     MessageBox.Show("Your entries have been saved.", "Saved",
                         MessageBoxButtons.OK, MessageBoxIcon.Information);
                 }
                 else
                 {
                     MessageBox.Show("Line " + formatTextList[i] + " is not formatted correctly.",
                            "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                 }
    }

Спасибо mmyers

Ответы [ 2 ]

1 голос
/ 10 июня 2010

Этот код лучше:

        private void CheckFormatting ()
        {
            StringReader objReaderf = new StringReader (txtInput.Text);
            List<String> formatTextList = new List<String> ();

            do {
                formatTextList.Add (objReaderf.ReadLine ());
            } while (objReaderf.Peek () != -1);

            objReaderf.Close ();

            bool testSucceed = true;
            for (int i = 0; i < formatTextList.Count; i++) {
                if (!Regex.IsMatch (formatTextList[i], "G[0-9]{2}:[0-9]{2}:[0-9]{2}:[0-9]{2} JG[0-9]{2}")) {
                    MessageBox.Show ("Line " + formatTextList[i] + " is not formatted correctly.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    testSucceed = false;
                    break;
                }
            }

            if (testSucceed) {
                this.WriteToFile ();
                MessageBox.Show ("Your entries have been saved.", "Saved", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
1 голос
/ 09 июня 2010

Похоже, в вашем регулярном выражении отсутствует закрывающая скобка: "G [0-9] {2}: [0-9] {2}: [0-9] {2}: [0-9]{2} JG [0-9] {2 ".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...