profile image

L o a d i n g . . .

반응형

 

1. 문제발생

BasicTextField 을 사용하면서 가격이 들어오면 천단위로 쉼표가 들어가는 로직이 필요했다.

네이티브에서는 간단하게 포맷팅을 하면 되었는데 구글링을 해보니 정말 어려워 보였다. 

생소한 visualTransformation을 커스텀해야했다.

 

2. 해결

사실 나는 숫자만 들어가고 inputType도 Number로 되어 있다.

그래서 간단하게 해결이 가능했다.

val decimalFormat = DecimalFormat("#,###")
onValueChange = { newText ->
    val cleanedText = newText.replace("[^0-9]".toRegex(), "")
    text = if (cleanedText.isNotEmpty()) {
        "${decimalFormat.format(cleanedText.toLong())} 원"
    } else {
        ""
    }},

 

위 코드처럼 수정을 하니 간단하게 해결이 되었다.

정규표현식을 사용해 숫자가 아닌 모든 문자는 공백처리를 하게 된다.

그런데 복사붙여넣기를 하지 않는 이상 입력값이 숫자가 아닌 값을 못들어오기에 필요할 것 같지는 않지만

안전요소로 추가해 놓았다.

반응형
복사했습니다!