我有这段代码来验证电话号码但看起来有点尴尬。我猜这是一个更好的方法来解决这个问题。我怎样才能提高效率呢?
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;
}
答案 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位数),前面有+
读取。缺点是,这种方式无法进一步处理,您可能需要从控制台读取一行到一个新变量。