Android Kotlin : 전화번호 및 주민등록번호 하이픈(-) 처리

2022. 9. 8. 13:52[Android APP] feat. Kotlin/Kotlin 공부

개요

회원가입을 하거나 사용자 정보를 변경하거나 할 경우 하이픈(-)이 들어가야하는 경우가 생긴다.

이럴 때는 우선 전화번호와 나머지를 구분해야 한다.

전화번호같은 경우에는 안드로이드 자체에서 제공해주는 기능이 있다.

 

 

1. 전화번호

전화번호 같은 경우는 매우 간단하다. 안드로이드에서 제공해주는 기능을 사용하면 알아서 하이픈처리를 해준다.

 

1) xml

android:inputType="phone"
  • 텍스트 입력 방식을 phone으로 설정해준다.

 

2)  Activity

binding.phoneText.addTextChangedListener(PhoneNumberFormattingTextWatcher())
  • TextChangedListener와 함께 PhoneNumberFormattingTextWacher()기능을 넣어주면 내가 입력할 때 전화번호 양식에 맞춰 하이픈(-)이 들어가게 된다.

 

2. 일반 숫자

핸드폰 번호같은 경우 제공해주는 기능이 있지만, 주민등록번호나 사업자 등록번호같은 일반 숫자의 경우 직접 코딩으로 넣어줘야한다.

 

1) 주민등록번호 하이픈 처리 Activity

binding.resisNumber.addTextChangedListener(object : TextWatcher {
    var prevL = 0
    override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {
        prevL = binding.입력받는텍스트.text.toString().length
    }
    override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {}
    override fun afterTextChanged(s: Editable) {
        val length = s.length
        if (prevL < length && length == 6){//3번째 6번째 글자 사이에 하이픈 삽입
            val data: String = binding.userResistNum.text.toString()
            binding.userResistNum.setText("$data-")
            binding.userResistNum.setSelection(length + 1)
        }
    }
})

 

addTextChangedListener는 사용자가 텍스트를 입력할 때,

텍스트가 바뀌기 전, 입력 중, 바뀐 후의 작업을 이벤트 처리해줄 수 있다.

따라서 위와같이 텍스트 길이를 구하여 하이픈을 넣어줄 수 있다.

prevL < length && length == 6

이 조건식에 따라서 하이픈의 위치를 조정해줄 수 있다.

위는 주민등록번호를 예시로 들었고, 3번째나 6번째에 하이픈을 넣어주고 싶다면

prevL < length && (length == 3 || length == 6)

이렇게 바꿔주면 된다.

 

 

2) xml

xml에서 문자를 최대 몇글자까지 받겠다고 지정해주면 더 좋다.

android:maxLength="13"

 

반응형