【发布时间】:2017-01-31 16:22:24
【问题描述】:
我的目标是查看用户是否输入了一次有效的电话号码。如果没有,我只是告诉他们这是错误的。我看过How to format a string as a telephone number in C# 和其他一些,但我仍然不确定。
我需要做的是确保用户输入一个有效的数字,这意味着 1) 它只能是数字 2) 破折号必须在正确的位置以及 3) 它的字符数量是正确的。
我做了第三个。数字 1 应该只是一个 TryParse 验证。我主要是在弄清楚数字 2。上述问题是否正确:
string phone = i["MyPhone"].ToString();
string area = phone.Substring(0, 3);
string major = phone.Substring(3, 3);
string minor = phone.Substring(6);
string formatted = string.Format("{0}-{1}-{2}", area, major, minor);
现在,这显示 .Format。我认为我不需要这样做,因为我只应该验证数字是否格式正确,而不是实际将数字放在破折号之间。
所以,最终结果将是 请输入号码:123-456-7890 恭喜这个号码有效
或
请输入号码:123-45-45-4 此号码无效。
避免使用正则表达式解决方案,并且数字不必是真实的。只要符合上述格式即可。
【问题讨论】:
-
查看正则表达式
-
嗯,作为程序员,我们的工作是让人们使用软件的生活更轻松,你确定没有其他方法可以不强制用户输入“-”作为电话号码?你通常是这样写下你的号码还是在他们要求时将其发送给某人?我认为与其强迫用户在电话号码中使用“-”,不如提出一个更好的设计。
-
请考虑国际号码,例如 +155512345678 表示美国号码。这不像在正确的位置检查破折号那么简单。让人们输入自己的格式,也许检查最少的位数。
-
我不能使用正则表达式 不要担心这个数字是实际数字。只要符合 xxx-xxx-xxxx 格式即可。
标签: c# validation substring phone-number tryparse