본문 바로가기
Development/Android

[android] 전화번호 파싱하기(PhoneNumberUtil)

by Sonagiya 2021. 4. 6.
반응형

안드로이드에서 기본적으로 제공되는 클래스를 사용해 봅니다

 

val phoneNum = PhoneNumberUtils.formatNumber(number, Locale.getDefault().country)

val result = PhoneNumberUtils.normalizeNumber(phoneNum)

 

생각보다 간단합니다... 그런데 국가번호(+82)가 추가되면 country 설정에 따라 변경이 되지 않는 경우도 발생합니다.

 

폰번호 관련 라이브러리 찾아 사용하니 country 값이 다른나라가 설정되도 National 데이터는 동일하게 노출되어 라이브러리를 사용하기로 했습니다.

(github.com/google/libphonenumber)

 

그리고 데이터를 받는 쪽에서 +82다음에 0 이 있어야 폰넘버로 인식하게끔 해놔서 0이 포함되어야 했는데 원 데이터에 0이 없어도 national 로 데이터를 획득하니 다행이 0이 붙어서 넘어 왔습니다.

val String.numberToNational: String
    get() {
        return try {
            val phoneNumberUtil = PhoneNumberUtil.getInstance()
            val locale = Locale.getDefault().country
            val toNationalNum = phoneNumberUtil.parse(this, locale)
            val national = phoneNumberUtil.format(toNationalNum, PhoneNumberUtil.PhoneNumberFormat.NATIONAL)
            PhoneNumberUtil.normalizeDigitsOnly(national)
        } catch(e: Exception) {
            Klog.e("StringExt:toNational", e)
            this
        }
    }

 

 

 

반응형

댓글