我们知道有不同长度的数字。在欧洲,我们大多数都有9位数字和国家代码。
在北美,我们经常会找到10位数字。
我试图了解如何从一个可能长度不同的数字中获取国家/地区代码。
有什么想法吗?也许你知道一些可以做到的工作库吗?
答案 0 :(得分:1)
我假设您在谈论电话号码国家/地区代码。国家代码由国际电联定义(https://en.wikipedia.org/wiki/List_of_country_calling_codes)。国家/地区代码可以是1,2或3位数。您唯一的选择是拥有所有国家/地区代码的列表并从那里解析它。请注意,没有重叠;例如,+ 44属于英国,没有国家只有4开始。
更新:北美地区有4个数字前缀,而不是1,由+1和3位数的NPA组成(http://en.wikipedia.org/wiki/North_American_Numbering_Plan)。同样的规则也适用,因为+ 1-NPA不能重复。巴巴多斯似乎是+1246,但没有其他国家或地区可以从+1246开始。您可以从http://en.wikipedia.org/wiki/List_of_North_American_Numbering_Plan_area_codes
获取所有NPA的列表答案 1 :(得分:1)
关键事实:
国家/地区代码始终位于号码的开头,因此无论号码长度如何,都很容易找到。
没有重叠,正如@Luis指出的那样。
A(看起来很漂亮)完整的国家/地区代码列表是here。如果按长度排序(最短的第一个)并通过列表比较第一个n
数字和列表条目,您将得到答案。
但是,如果查看列表,您会看到有各种代码组。更智能的方法会注意到:
答案 2 :(得分:1)
国家/地区代码从左到右解析,确定性端点类似于霍夫曼编码的概念。即,如果您首先看到1,请停止,这是美国/加拿大/相关地区。如果你看到除7(俄罗斯/哈萨克斯坦)以外的大多数其他数字,继续前进。其中一些数字可能会在第二个值上终止。
国家/地区代码列表位于:http://www.howtocallabroad.com/codes.html
为了确定哪个国家/地区代码存在,您可以轻而易举地编写自己的电话号码字符串解析器。
(不要忘记,如果这些是来自特定国家/地区的数字,您还必须考虑该国家/地区的退出代码,这也在我链接的页面上)
编辑:哦,我猜路易斯覆盖了它。但雅各布对巴巴多斯的评论不正确。巴巴多斯与美国的国家代码相同; 246是美国/加拿大国家代码中的本地“区号”。