iPhone具有非常好的电话号码分割功能,例如:
新加坡手机:+65 9852 4135
新加坡居民专线:+65 6325 6524
中国移动:+86 135-6952-3685
中国居民线:+86 10-65236528
香港:+886 956-238-82
美国:+1(732)865-3286
请注意这里的好功能:
- 分割国家代码,区号和其余部分是自动的;
- 分隔符也很好地被采用到不同的国家,例如“()”,“ - ”和空格。
注意解析逻辑对我来说是可行的,但是,我不知道从哪里可以了解大多数国家的电话号码格式。
我在哪里可以找到这样的知识,或者实现它的开源代码?
答案 0 :(得分:2)
您可以使用libphonenumber代码库获得类似的功能。
答案 1 :(得分:0)
有趣的是,你不能使用NSNumberFormatter
,但你可以为它编写自己的自定义类。只需创建一个新类,设置countryCode
,areaCode
和number
等属性,然后创建一个根据countryCode
格式化数字的方法。
以下是一个很好的例子:http://the-lost-beauty.blogspot.com/2010/01/locale-sensitive-phone-number.html
答案 2 :(得分:0)
顺便说一句:一位朋友告诉我他必须保留的 gigantic 正则表达式,可以从世界各地数百个国家的拦截通信中挑选电话号码。这非常重要。
值得庆幸的是,您的问题更容易,因为您可以拥有一个包含每个国家/地区格式的表格:
format[usa] = "+d (ddd) ddd-dddd";
format[hk] = "+ddd ddd-ddd-dd";
format[china_mobile] = "+dd ddd-dddd-dddd";
...
然后,当您进行打印时,只需根据需要从每个d
点的电话号码字符串输出一位数字。这假设你知道这个国家,这对于电话设备是一个足够安全的假设 - 选择"默认"少数周边国家的格式。
由于some countries have different formats with different lengths您可能需要在表格中存储其他信息:
format[germany][10] = "..."
format[germany][11] = "....."