2014-01-21 1 views
8

У меня есть номер, который мне нужно форматировать в качестве номера телефона. Если яandroid: как мне форматировать номер как телефон с круглыми скобками

PhoneNumberUtils.formatNumber(numStr); 

Тогда я получаю

888-555-1234 

Но что мне нужно, чтобы получить это

(888) 555-1234 

Как получить второй? Есть ли стандартный андроид?

+0

Вы только ориентируетесь в Северной Америке число? –

ответ

15

Если вы знаете страну, для которой вы хотите это сделать, вы можете использовать открытую библиотеку 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 и вместо использования кода страны нуль.

3

Если у вас есть строки "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 

Однако это трудно закодированный. Вам нужно будет убедиться, что у String было всего 10 цифр, прежде чем делать это.

7

Не знаю, нашли ли вы то, что искали, но я закончил тем, что написал небольшой метод, который занимает длину строки (так как номера телефонов, которые я получаю от веб-службы, могут быть различными форматы). Я считаю, что он должен работать (до сих пор все мои тестовые примеры были с двумя первыми вариантами - еще не тестировали два других).

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; 
} 
Смежные вопросы