[Swift] 숫자에 콤마 넣기, 빼기 (가격 표시)

임주희·2022년 9월 21일
0
post-thumbnail
  • 숫자에 세자리 마다 ","표기하기
  • 문자열 ("1,000") 에서 ","를 빼고 숫자 (1000)으로 만들기

화면에 가격을 표시할 때나
서버에서 가격을 문자열 "1,000"로 내려주어서, 가격 계산을 위해 숫자로 변환시킬 때 유용하다.

NumberFormatter.Stryle에서 .decimal을 사용할 것이다.

decimal : 십진법

👉 세자리마다 콤마 넣기

// 숫자 (123456)에 3자리마다 콤마(,) 넣기 -> String("123,456")
let requestIntValue: Int = 123456

let numberFormatter: NumberFormatter = NumberFormatter()
numberFormatter.numberStyle = .decimal

let result: String = numberFormatter.string(for: requestIntValue)!

print(result) // "123,456"

👉 "123,456"에서 콤마 빼기

// 문자열 "123,456"을 숫자 123456으로 바꾸기 (콤마 빼기)
let requestStringValue: String = "123,456"

let numberFormatter: NumberFormatter = NumberFormatter()
numberFormatter.numberStyle = .decimal

let result: NSNumber = numberFormatter.number(from: requestStringValue)!
print(result) //123456


NumberFormatter.Stryle에는 .decimal 이외에도 여러가지가 있다.


#

SwiftUI에서는 기본적으로 ","가 들어가기 때문에 콤마 없이 숫자만 표기하고 싶다면 NumberFormatter.Stryle .none 을 사용하자.

기본으로 콤마가 들어간다.

확장(extension)을 사용하여 스타일을 적용할 수 있도록 하였다.

extension Int {
    func formatterStyle(_ numberStyle: NumberFormatter.Style) -> String? {
        let numberFommater: NumberFormatter = NumberFormatter()
        numberFommater.numberStyle = numberStyle
        return numberFommater.string(for: self)
    }
}

결과

.none을 사용하여 "," 제거

번외. 사실 그냥 String으로 변환해도 같은 결과가 나온다.😝

Text("\(intValue)") 				 //123,456

Text(intValue.formatterStyle(.none)) //123456
Text("\(String(intValue))")			 //123456 ←← 동일한 결과



0개의 댓글

관련 채용 정보