적당한 고통은 희열이다

- 댄 브라운 '다빈치 코드' 중에서

Swift iOS 앱 개발/Swift

[Swift iOS] Convert number into money format with a comma (feat. NumberFormatter 숫자 콤마 표시)

hongssup_ 2021. 9. 30. 11:50
반응형

NumberFormatter 

: 숫자 값과 텍스트 사이를 변환하는 formatter 

 

숫자 / 금액에 자동으로 쉽표를 추가해주는 formatter가 있는 지 몰랐던 5개월 전의 나는 귀엽게도 다음과 같은 코드로 가격에 쉼표를 표시해주었다. 😆

let price = UILabel()
var priceArray = Array("50000")
if priceArray.count == 4 {
    priceArray.insert(",", at: 1)
} else if priceArray.count == 5 {
    priceArray.insert(",", at: 2)
}
price.text = String(priceArray)    // "50,000"

숫자가 4개면 두번째 자리에 쉼표를, 5개면 세번째 자리에 쉼표를 추가해준다는 깜찍한 생각이라니 ㅎㅎ

만원단위까지밖에 없었기에 망정이지.. 금액 더 커지면 어쩌려고..? ㅋㅋㅋㅋㅋ

 

5개월 후의 나는 이제, 세자리 수 마다 자동으로 쉼표를 추가해주는 NumberFormatter 를 활용하여, 쪼금 더 스마트한 코딩을 해보려고 한다. 

다음과 같이 NumberFormatter() 의 numberStyle을 .decimal로 설정하여 자동으로 숫자를 변환해주도록 하였다. 

let price = UILabel()
price.text = moneyFormatter(price: "50000")    // "50,000"

func moneyFormatter(price: String) -> String {
    let numberFormatter = NumberFormatter()
    numberFormatter.numberStyle = .decimal
    if !(isStringEmptyCheck(str: money)), let priceInt = Int(price) {
        return numberFormatter.string(from: priceInt as! NSNumber)!
    }
    return ""
}

 

 

+ NumberFormatter()의 numberStyle에 .currency 스타일이 있길래 해보니 이거는 "$50,000.00" 으로 변환이 되더라.

number formatter locale에 등록된 화폐 단위로 변환이 되는거라고 한다. 

728x90
반응형