我有一個我需要格式化爲電話號碼的號碼。如果我做android:我如何將數字格式化爲帶括號的電話號碼
PhoneNumberUtils.formatNumber(numStr);
然後我得到
888-555-1234
但我需要得到的是
(888) 555-1234
我如何獲得第二個?有沒有一個標準的Android方式?
我有一個我需要格式化爲電話號碼的號碼。如果我做android:我如何將數字格式化爲帶括號的電話號碼
PhoneNumberUtils.formatNumber(numStr);
然後我得到
888-555-1234
但我需要得到的是
(888) 555-1234
我如何獲得第二個?有沒有一個標準的Android方式?
如果你知道你想要做的國家,你可以使用Google的開源庫libphonenumber。這裏是你如何格式化:
String numberStr = "8885551234"
PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
try {
PhoneNumber numberProto = phoneUtil.parse(numberStr, "US");
//Since you know the country you can format it as follows:
System.out.println(phoneUtil.format(numberProto, PhoneNumberFormat.NATIONAL));
} catch (NumberParseException e) {
System.err.println("NumberParseException was thrown: " + e.toString());
}
如果你不知道國家則numberStr
使用E.164 format phone number和地方國家代碼使用空的。
如果你有字符串"888-555-1234"
- 通過使用PhoneNumberUtils.formatNumber(numStr);
你可以簡單地這樣做:
String numStr = "888-555-1234";
numStr = "(" + numStr.substring(0,3) + ") " + numStr.substring(4);
System.out.print(numStr); // (888) 555-1234
然而,這是硬編碼。在這樣做之前,您需要確保字符串有完整的10位數字。
不知道你是否找到了你要找的東西,但是我最終寫了一個需要字符串長度的小方法(因爲我得到的電話號碼來自Web服務,可以是各種格式)。我相信它應該起作用(到目前爲止,我的所有測試用例都是前兩種選擇 - 尚未測試其他兩種)。
public static String FormatStringAsPhoneNumber(String input) {
String output;
switch (input.length()) {
case 7:
output = String.format("%s-%s", input.substring(0,3), input.substring(3,7));
break;
case 10:
output = String.format("(%s) %s-%s", input.substring(0,3), input.substring(3,6), input.substring(6,10));
break;
case 11:
output = String.format("%s (%s) %s-%s", input.substring(0,1) ,input.substring(1,4), input.substring(4,7), input.substring(7,11));
break;
case 12:
output = String.format("+%s (%s) %s-%s", input.substring(0,2) ,input.substring(2,5), input.substring(5,8), input.substring(8,12));
break;
default:
return null;
}
return output;
}
您只需使用這一點,並得到你想要的:
new PhoneNumberFormattingTextWatcher()
或有看看這個網址:
http://developer.android.com/reference/android/telephony/PhoneNumberFormattingTextWatcher.html
你只靶向北美的數字? –