2011-12-14 82 views
1

iPhone有着相當不錯的電話號碼劃分功能,例如:iphone的電話號碼分割算法?

新加坡手機:+65 9852 4135
新加坡居民行:+65 6325 6524
中國移動:+86 135-6952-3685
中國常駐行:+86 10-65236528
香港:+886 956-238-82
美國:+1(732)865-3286

注意的很不錯的功能在這裏:
- 的國家代碼分裂, 區號,其餘是自動的;
- 分隔符也適用於不同的國家,例如, 「()」,「 - 」和空格。

注意解析邏輯對我來說是可行的,但是,我不知道在哪裏得到大多數國家的電話號碼格式的知識。
我在哪裏可以找到這樣的知識,或者實現它的開源代碼?

回答

2

你可以得到的libphonenumber代碼庫類似的功能。

0

有趣的是,你不能使用NSNumberFormatter這個,但你可以編寫你自己的自定義類。只需創建一個新類,然後設置屬性,如countryCode,areaCodenumber,然後創建一個基於countryCode的格式編號的方法。

這裏有一個很好的例子:http://the-lost-beauty.blogspot.com/2010/01/locale-sensitive-phone-number.html

+0

好吧,挑戰不是編碼,而是知識,我不知道,世界上有200個國家? – athos 2011-12-14 02:20:17

+0

與那些花時間去幫助你的人討厭,也許你可以花更多的時間來制定你無法解決的問題的哪一部分。你想要的是一個格式表格,而不是格式化數字的方式。 – PengOne 2011-12-14 02:58:04

0

順便說一句:朋友告訴我一個巨大正則表達式他必須保持這種可以拿起電話號碼從全球數百個國家進行截獲的通信。這是非常平凡的。

值得慶幸的是你的問題是更容易,因爲你可以有按國家的格式表:

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] = "....."