【问题标题】:Data Validation for Random varying Phone Numbers随机变化电话号码的数据验证
【发布时间】:2010-05-05 04:07:21
【问题描述】:

我在我的 WPF (C#, VS 08) 应用程序中存储了不同长度的电话号码。

我将它们存储为字符串。我的问题是关于我的方法AddNewPhoneNo(string phoneNo)

在这种方法中,我使用Int.TryParse 来验证传入的数字(即不为空,是数字...)。从那以后我意识到这可能不是最好的方法,因为那样我就被限制在± 2147483647 的数字范围内。显然电话号码并非总是如此。

验证电话号码的好方法是什么?我猜基本规则如下:

  • 全数字
  • 全部积极
  • 最多 25 个字符(可能更多,但暂时会这样做)

如果现在还有其他规则,那可能就是这样。

【问题讨论】:

  • 你到底为什么要在电话号码上使用 Int.TryParse?正则表达式可能是更好的选择。
  • Int.TryParse 电话号码是为了确保它是数字

标签: c# string validation int tryparse


【解决方案1】:

如果您的限制条件是字符串必须不为空、只能是数字和

static bool IsValidPhoneNumber(string phoneNumber)
{
    return !string.IsNullOrEmpty(phoneNumber)
        && (phoneNumber.Length <= 25)
        && phoneNumber.All(c => char.IsNumber(c));
}

如果您的约束更复杂(例如,字符串可以包含像“123-456-7890”这样的数字分组或像“(123)4567890”这样的括号),那么您应该使用正则表达式。

【讨论】:

    【解决方案2】:

    【讨论】:

    • 我想是的,我被告知要避免这些,但我想这可能是最简单和最简单的方法
    • @baron - RegEx 可能会令人困惑且难以调试,但我认为对于这种众所周知的模式(以及已经存在的 RegEx),可以肯定地说它可能是最好的方法。
    【解决方案3】:

    你可以试试Int64.TryParse,它会给你一个±9223372036854775807的范围

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-30
      相关资源
      最近更新 更多