- 숫자에 세자리 마다 ","표기하기
- 문자열 ("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"을 숫자 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 ←← 동일한 결과