电话号码验证

时间:2015-04-29 10:27:25

标签: c#

我有这段代码来验证电话号码但看起来有点尴尬。我猜这是一个更好的方法来解决这个问题。我怎样才能提高效率呢?

public static bool validTelephoneNo(string telNo)
{
    bool condition = false;
    while (condition == false)
    {
        Console.WriteLine("Enter a phone number.");
        telNo = Console.ReadLine();
        if (telNo.Length > 8)
        {
            if (telNo.StartsWith("+") == true)
            {
                char[] arr = telNo.ToCharArray();
                for (int a = 1; a < telNo.Length; a++)
                {
                    int temp;

                    try
                    {
                        temp = arr[a];
                    }

                    catch
                    {
                        break;
                    }

                    if (a == telNo.Length - 1)
                    {
                        condition = true;
                    }
                }
            }
        }
    }
    return true;
}

2 个答案:

答案 0 :(得分:3)

使用正则表达式可以轻松实现目标:

public static bool validTelephoneNo(string telNo)
{
    return Regex.Match(telNo, @"^\+\d{1,7}$").Success;
}

这个模式完全如上所述:由整数组成,长度小于8位,在开始时有一个加号,如果条件某种程度上更复杂,也可以修改此模式。 / p>

答案 1 :(得分:3)

Console.WriteLine("Enter a phone number.");
bool isValid = new System.Text.RegularExpressions.Regex(@"^[+]\d{1,7}$").IsMatch(Console.ReadLine());

正则表达式检查是否只有一个数字(1到7位数),前面有+读取。缺点是,这种方式无法进一步处理,您可能需要从控制台读取一行到一个新变量。