我们要存储 10 位数的手机号码,即 9999999999。它应该是数字还是字符串数据类型?我们不想对此进行任何计算或操作操作
哪个更好的内存和性能明智?
原文由 Sahil Sharma 发布,翻译遵循 CC BY-SA 4.0 许可协议
我们要存储 10 位数的手机号码,即 9999999999。它应该是数字还是字符串数据类型?我们不想对此进行任何计算或操作操作
哪个更好的内存和性能明智?
原文由 Sahil Sharma 发布,翻译遵循 CC BY-SA 4.0 许可协议
有几点需要牢记:
通常,您不打算对其进行计算的数字应存储为字符串形式。如果您需要该号码能够以零开头(就像您所做的那样,因为某些电话号码是这样),这是必不可少的。
因此,即使(或何时)您能够将电话号码存储为一个巨大的整数(您可以使用 64 位整数),您也不应该这样做。一旦数字以零开头,您就会丢失数据。
存储电话号码时,请记住国家代码是一种特殊类型的信息。如果您在存储时将其与其他号码分开,您会做得最好。通过这种方式,您可以轻松地按国家/地区查询电话号码,并且您不必多次解析号码(在存储之前,而不是每次获取它时)。此外,如果您将电话号码与国家/地区代码一起存储,则需要验证该东西以确保 始终 存储国家/地区代码,因为来自两个不同国家/地区的两个号码可能相同,如果一个国家/地区代码和另一个没有。
还要记住,标点符号是一种表示方法,因此与您存储数据的方式无关。您始终可以选择以您想要的方式呈现数据,而您想要的方式在所有情况下都取决于许多因素。例如,您要呈现什么样的数据,向谁呈现数据,在某些情况下甚至 何时 呈现数据。对于电话号码,您应该将号码存储为字符串,不带任何标点符号。
我建议您查看用于解析、格式化和验证国际电话号码的 Google 库( https://github.com/googlei18n/libphonenumber )。你可以给这个图书馆你的电话号码和国家代码,它会给你很多有用的信息,比如这个号码是否可能和有效,它属于哪个地区,它是什么类型的号码等.
专业提示 I: 为您的用户提供一种选择号码所属国家/地区的方法,而不是让他们输入国家/地区代码。对您更好,对您的用户也更好。
专业提示 II: 很少有“以北美为中心的应用程序”或“以此处为中心的应用程序”之类的东西,尤其是当您的应用程序在网络上可用时。它确实会发生,但很少见,因此明智的做法是为世界准备您的应用程序,而不是其中的一小部分。
原文由 erichjsonfosse 发布,翻译遵循 CC BY-SA 4.0 许可协议
1 回答2.4k 阅读✓ 已解决
1 回答2.3k 阅读✓ 已解决
1 回答833 阅读
ITU-T 建议 E.164 指出,在国家拨号计划中,国家代码需要 3 位数字,目录号码最多需要 15 位数字。
而且,许多人添加了一些标点符号。例如:
+1.212.555.1212 是北美号码。它也可以在以北美为中心的应用程序中呈现 (212) 555-1212。
32 个字符的文本应该可以在全球范围内发挥作用。
不要使用数字,否则你会后悔的。我是:两件事。
2.12555E+09
这几乎就像 SIRI 告诉我 你收到了 20 亿、12500 万的电话一样愚蠢……电话簿号码 不是数字数据类型。 看看这个: Falsehoods Programmers Believe About Telephone Numbers 。