티스토리 뷰
핸드폰 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 번호 포맷으로 변경해준다.
이런 식의 사이드 이펙트를 막는 라이브러리를 개인적으로 굉장히 선호한다.
결과를 확인해보자.
정말 잘 변환된다.
마치며
번호 변환으로 고통받으면서, 하드코딩하지 마세요.
구글에서 제공해줍니다.
구글 최고
'개발 > JAVA' 카테고리의 다른 글
[Java] PDF 파일을 HTML로 변환하는 법 (convert PDF to HTML) (0) | 2024.02.15 |
---|---|
Java의 try-with-resources 구문 사용법 (0) | 2023.08.25 |
java.lang.UnsupportedOperationException at java.base/java.util.AbstractList.remove(AbstractList.java:167) 에러 수정하기 (0) | 2023.08.22 |
Java에서 String에 포함된 HTML 태그 제거하기(정규식 사용 X) (0) | 2023.06.22 |
자바 유저를 위한 기본적인 메모리 절약 기술 (0) | 2023.04.21 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- serverless
- AOP
- 오블완
- Spring
- 티스토리챌린지
- EKS
- AWS EC2
- springboot
- openAI API
- MySQL
- Elastic cloud
- ChatGPT
- docker
- Kotlin
- lambda
- JWT
- terraform
- 스프링부트
- OpenFeign
- java
- Log
- S3
- 후쿠오카
- OpenAI
- CloudFront
- AWS
- GIT
- elasticsearch
- 람다
- cache
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함