티스토리 뷰

핸드폰 SMS 인증을 개발하면서 해외의 SMS 서비스를 사용하면서

 

핸드폰 번호 포맷 변환 기능이 필요하게 되었다.

 

Twilio에서는 E.164이라는 핸드폰 번호 국제 표준을 사용한다. 

 

해외 서비스를 이용하면서 SMS 인증을 해본 사람들은 한번씩 다 봤을 번호 체계이다.

 

E.164 format 이란?

우리나라의 country code는 +82 이다.

 

그리고 우리나라의 핸드폰 번호는 대부분 010 - xxxx - xxxx 이다.

 

이 번호들을 기준으로 E.164 format으로 핸드폰 번호를 변경하면 +8210xxxxxxxx 이 된다. 

 

그런데 문제는 오래된 번호 사용자들은 010이 아닐수도 있고 11자리가 아닐수도 있다.

 

이걸 하나씩 하드코딩할 수는 없어서 괜찮은 라이브러리가 있어서 소개해보려고 한다.

 

libphonenumber

구글에서 만든 핸드폰 번호 포맷 변환 라이브러리이다. 써보니 정말 갓글이라는 말밖에 안나왔다.

 

build.gradle

implementation 'com.googlecode.libphonenumber:libphonenumber:8.12.30'

코드

try {
    PhoneNumberUtil phoneNumberUtil = PhoneNumberUtil.getInstance();
    Phonenumber.PhoneNumber parsedPhoneNumber1 = phoneNumberUtil.parse("010-0000-0000", "KR");
    String result1 = phoneNumberUtil.format(parsedPhoneNumber1, PhoneNumberUtil.PhoneNumberFormat.E164);

    Phonenumber.PhoneNumber parsedPhoneNumber2 = phoneNumberUtil.parse("01000000000", "KR");
    String result2 =phoneNumberUtil.format(parsedPhoneNumber2, PhoneNumberUtil.PhoneNumberFormat.E164);

    System.out.println("result 1: " + result1);
    System.out.println("result 2: " + result2);
} catch (NumberParseException e) {
    throw new RuntimeException(e);
}

"-"를 포함하던 안하든 E164 번호 포맷으로 변경해준다. 

 

이런 식의 사이드 이펙트를 막는 라이브러리를 개인적으로 굉장히 선호한다.

 

결과를 확인해보자.

 

 

정말 잘 변환된다.

 

마치며

번호 변환으로 고통받으면서, 하드코딩하지 마세요. 

 

구글에서 제공해줍니다.

 

구글 최고

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함