phone number 应该是一个字符串或者某种能够保存 phone number 的数字类型?

phone number should be a string or some numeric type that have capacity to save phone number?

我们要存储 10 位手机号码,即 9999999999。它应该是数字还是字符串数据类型?我们不想对此做任何计算或操作操作

内存和性能哪个更好?

ITU-T recommendation E.164 表示您需要 3 位数字的国家代码和最多 15 位数字的国家拨号计划中的目录号码。

而且,很多人加了一些标点符号。例如:

+1.212.555.1212 是北美号码。也可以渲染 (212) 555-1212 在以北美为中心的应用程序中。

32 个字符的文本应该可以在全球范围内解决问题。

请勿使用数字,否则您会后悔的。我是:两件事。

  • 一家公司失去了一些欧洲业务,因为我们假设所有 phone 个数字都是 NANP-compliant ten-digit 个数字。
  • 电子表格导出以科学记数法呈现数字2.12555E+09这几乎和 SIRI 告诉我的一样愚蠢你有来自 20 亿、1.25 亿的电话....

Telephone 电话号码 不是数字数据类型。 看看这个:Falsehoods Programmers Believe About Telephone Numbers

必须是string,因为phone数会超过int甚至long的限制。因此,对于处理这些情况,string 始终是首选。

您可以使用 "ulong" 来存储长整数值。要读取特定值或 phone 数字,您可以使用 "Convert.ToUInt64(Console.ReadLine());"

有几件事需要牢记:

一般来说,您不打算对其进行计算的数字应存储为字符串形式。 如果您需要数字能够以零开头(正如您所做的那样,因为某些 phone 数字确实如此),这是必不可少的。

因此,即使(或何时)您能够将 phone 数字存储为一个巨大的整数(您可以使用 64 位整数),您也不应该这样做。一旦数字以零开头,您就会丢失数据。

存储 phone 号码时,请记住国家代码是一种特殊类型的信息。如果在存储时将其与数字的其余部分分开,则效果最好。通过这种方式,您可以轻松地按国家/地区查询 phone 号码,并且您不必多次处理号码解析(在存储它之前,而不是每次获取它时)。 此外,如果您将 phone 号码与国家代码一起存储,则需要验证该内容以确保您 始终 存储国家代码,因为两个数字来自两个如果一个国家有国家代码而另一个国家没有国家代码,那么不同的国家可能是相同的。

另请记住,标点符号是一种表示方法,因此与您存储数据的方式无关。 您始终可以选择以您想要的方式呈现数据,而您想要的方式在所有情况下都取决于许多因素。例如,您要展示什么类型的数据,您要展示给谁,甚至在某些情况下 何时 展示数据。 对于 phone 个数字,您应该将数字存储为字符串,不带任何标点符号。

我建议您查看 Google 用于解析、格式化和验证国际 phone 号码 (https://github.com/googlei18n/libphonenumber) 的库。你可以给这个图书馆你的 phone 号码和国家代码,它会给你很多有用的信息,比如这个号码是否可能和有效,它属于哪个地区,什么样的号码是等等

专业提示 I: 为您的用户提供一种方法 select 号码属于哪个国家,而不是让他们输入国家代码。对您更好,对您的用户也更好。

专业提示 II: 很少有 "North American centric app" 或 "insert region here centric app" 之类的东西,尤其是当您的应用程序在网络上可用时。它确实会发生,但很少见,所以明智的做法是为世界准备你的应用程序,而不是它的一小部分。