我想我在這裏面臨一個悖論。處理電話號碼格式
我想要做的,當我接收/撥打電話,我有多少,所以我需要知道,如果它的國際電話號碼,如果一個本地號碼等
的問題是是:
- 對於我知道,如果一個號碼是國際性的,我需要解析,並檢查它的長度,但長度不同,從國家到國家,所以,我應該做的分析和識別的方法各國? (在我看來不起作用);
- 對於我來說,如果它是一個本地號碼,我需要區號,所以我必須做同樣的事情,解析號碼並檢查長度,根據區號長度得到第一個號碼;
它很難找到解決方案。圖書館libphonenumber提供了很多有用的類,但我認爲可以幫助我的那個類,把我帶到另一個悖論。
phoneUtil.parse(number,countryAcronym)方法返回帶有國家代碼的號碼,但是它的功能是,如果我通過帶有首字母縮寫詞「US」的號碼返回國家代碼爲'1'的號碼,現在如果我將首字母縮寫詞改爲「BR」,它會更改數字並返回巴西的國家代碼「55」。所以,無論如何,我需要根據我得到的數字來確定國家的首字母縮略詞。
EX:
numberReturned = phoneUtil.parse(phoneNumber, "US");
phoneUtil.format(numberReturned, PhoneNumberFormat.INTERNATIONAL);
上面的代碼,返回數字與美國的國家代碼,但現在如果我改變「美國的」任何其他國家的首字母縮寫,將返回相同的號碼,但與國家代碼那個國家。
我知道這LIB不應該猜測哪個國家的數量是(這將是真棒!),但多數民衆贊成我需要什麼。
這真的讓我的頭腦變得瘋狂。我需要來自SO的明智的法師的好建議。
如果你能幫我做出一個好決定,我會非常感激。
謝謝。
PS:如果您已經使用libphonenumber,並與此更多的經驗,請指導我使用哪一類,如果有一個能夠解決這個問題。 =)
是的。但問題是,我必須支持幾乎所有國家。這將是很難,很多研究和思考得出一個簡單而明智的結論。一個好的方法是讓國家的數字是唯一的方法來解析這個數字呢?不管怎麼說,多謝拉。 – rogcg
非常,是的。您需要檢查電話號碼字符串是以「+」開頭還是以任何適合您所在國家/地區的國際電話爲前綴的前綴 - 如果不在那裏,那麼它是全國性的。電話知道要發送哪些數字來代替+號,但我不知道如何從代碼中檢索數字。 –