回答
在最基本的:
String formattedNumber = PhoneNumberUtils.formatNumber(unformattedNumber);
根據該國的數量從規則這將自動格式化數。
也可以使用格式化就地編輯的文本:
PhoneNumberUtils.formatNumber(Editable text, int defaultFormattingType);
看看PhoneNumberUtils
了更多的選擇。
看起來this library from Google可能是在Android中進行自定義格式設置的更好解決方案。
API文檔: https://github.com/googlei18n/libphonenumber/blob/master/README.md
我選擇使用谷歌的版本(https://github.com/googlei18n/libphonenumber),因爲那時分SDK可以低一些(我想是不是在Android SDK中,直到21)。
使用是這樣的:
PhoneNumberUtil pnu = PhoneNumberUtil.getInstance();
Phonenumber.PhoneNumber pn = pnu.parse("1234567890", "US");
String pnE164 = pnu.format(pn, PhoneNumberUtil.PhoneNumberFormat.E164);
在Android Studio中一個在需要添加的build.gradle這依賴:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
...
compile 'com.googlecode.libphonenumber:libphonenumber:7.2.2'
}
formatNumber得到了過時的棒棒糖,之後你需要添加作爲額外參數的語言環境。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
return PhoneNumberUtils.formatNumber(yourStringPhone,Locale.getDefault().getCountry());
} else {
//Deprecated method
return PhoneNumberUtils.formatNumber(yourStringPhone);
}
我試過這個,但是電話號碼沒有在移動設備上格式化,因爲它在平板電腦上正常工作,平板電腦顯示格式化的數字。 – musica 2017-06-21 09:12:05
我在印度和Locale.getDefault()。getCountry()給我「美國」。好的,這不是問題,但數字不會被格式化。它按原樣返回10/11數字號碼。使用不推薦的方法,它將返回格式。 – pratik03 2017-07-24 07:19:23
getCountry()返回「」爲我 – styler1972 2017-10-19 19:25:19
獨立的格式原始電話號碼解決方案,如果你不知道你的國家,需要支持前棒棒糖。
fun formatNumberCompat(rawPhone: String?, countryIso: String = ""): String {
if (rawPhone == null) return ""
var countryName = countryIso
if (countryName.isBlank()) {
countryName = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
Resources.getSystem().configuration.locales[0].country
} else {
Resources.getSystem().configuration.locale.country
}
}
return if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
PhoneNumberUtils.formatNumber(rawPhone)
} else {
PhoneNumberUtils.formatNumber(rawPhone, countryName)
}
}
爲什麼需要檢查一下LOLLIPOP? – 2018-02-27 15:01:12
@androiddeveloper檢查此答案https://stackoverflow.com/questions/34521644/using-phonenumberutils-formatnumber-on-api-16 – whalemare 2018-02-28 01:52:47
所以答案是,這是因爲這是它的方式... – 2018-02-28 08:58:55
- 1. 使用PhoneNumberUtils中的電話號碼格式NaN掩碼EditText
- 2. 如何使用PhoneNumberUtils庫將電話號碼格式化爲沒有國家前綴的國家格式?
- 3. 使用substr格式化電話號碼
- 4. 使用libPhoneNumber格式化電話號碼
- 5. 格式化電話號碼
- 6. 如何使用XSLT v1.0格式化電話號碼?
- 7. 格式化字符串/電話號碼
- 8. 在Django格式化電話號碼
- 9. 電話號碼格式化,OnBlur
- 10. jqGrid tableToGrid格式化電話號碼列
- 11. datagridview中格式化電話號碼
- 12. 如何編寫html表格來格式化電話號碼?
- 13. 如何用jQuery格式化電話號碼
- 14. 如何驗證電話號碼格式
- 15. 電話號碼格式javascript
- 16. 使用Javascript格式化多個asp:TextBox的電話號碼
- 17. 如何自動格式化電話號碼進入安卓
- 18. 格式化問題:如何打電話給號碼?
- 19. 如何在angualrjs中格式化電話號碼?
- 20. 如何將NSString格式化爲美國的電話號碼?
- 21. 如何在java中將電話號碼格式化爲Android
- 22. 如何使用Javascript中的.replace()函數格式化電話號碼
- 23. 在EPPlus中格式化一個使用電話號碼格式的列
- 24. Zapier格式電話號碼(代碼)
- 25. SQL:格式化電話號碼(插入空格)
- 26. 用於格式化電話號碼的VBA腳本
- 27. Google應用腳本電話號碼重新格式化
- 28. 簡化電話號碼格式的代碼
- 29. 格式電話號碼的GridView
- 30. 格式包含電話號碼
代替1234567890→(123)456-7890我越來越: – 2013-01-29 16:46:22
此格式如123-456-7890 – loeschg 2013-04-24 16:33:14
雖然答案是正確的,我認爲這個問題實際的正確答案是,格式化沒有足夠的可定製性,除非你想編寫你自己的實現。 :-(STPhoneFormatter在CocoaPods for iOS開發是一個非常漂亮的圖書館來處理這個。沒有這樣的喜悅的Android。 -/ – 2013-12-18 21:59:44