如何检查邮政编码是否在文本框中正确输入C#

时间:2014-03-12 13:48:24

标签: c# winforms

对于我的学校,我需要制作一个程序,检查您是否提供了正确的邮政编码:例如,它必须采用以下格式:0000 XX。 这是荷兰的邮政编码。

我试图找出如何做到这一点,但我真的不知道如何解决这个问题。 我不能使用正则表达式,因为我们还没有学到这一点。

我允许使用的事件:

TextChanged
KeyDown
KeyPress
KeyUp

我允许使用的功能:

  

char.isNumber();
char.isLetter();

如果有人能帮助我,那就太棒了。 提前谢谢。

3 个答案:

答案 0 :(得分:2)

作为家庭作业的帮助:

在OnTextChanged事件中迭代字符串:

if string is longer than 7?: fail

for each character in string:
  if char-pos <= 4 && character is not number: fail
  if char-pos == 5 && character is not whitespace: fail
  if char-pos > 5 && character is not letter: fail
end
祝你好运。

答案 1 :(得分:2)

相对而言,您可以使用RegEx - 因为RegEx是我们都会使用的正确解决方案。不要害怕从你的课程中走出来并自己学习东西......

但是,坚持你强调的功能......

using System;

namespace SO5
{
    class Program
    {
        public static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");

            Console.WriteLine(TestPostcode("1234 XC"));
            Console.WriteLine(TestPostcode("D4 XC"));
            Console.WriteLine(TestPostcode("4632 XC1"));

            Console.Write("Press any key to continue . . . ");
            Console.ReadKey(true);
        }

        public static bool TestPostcode(string input)
        {
            System.Text.StringBuilder sb = new System.Text.StringBuilder();
            foreach (char c in input)
            {
                if (char.IsLetter(c))
                {
                    sb.Append("L");
                }
                else if (char.IsNumber(c))
                {
                    sb.Append("N");
                }
            }

            return sb.ToString() == "NNNNLL";

        }

    }
}

现在,如果你想留下深刻印象,请阅读有关单元测试和名为NUnit的(免费)产品的内容。然后,您将能够随意使用测试用例执行您的方法,同时还可以进行有效的测试以确保该事物仍然可用...

答案 2 :(得分:1)

你可以通过几种方式解决这个问题,但我会告诉你如何做到这一点。

处理TextChanged,并在该方法中获取输入文本的字符串。

遍历每个字符,并根据位置检查您要查找的字符类型。