2014-01-21 2 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 

그러나,이 하드 코딩됩니다. 이렇게하기 전에 문자열에 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; 
} 
관련 문제