반응형
iOS에서 세 자리수 마다 콤마(,) 넣기
정수 값을 세자리수 마다 콤마를 넣는 방법은 다음과 같다.
let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = .decimal
let price = 10005000
let result = numberFormatter.string(from: NSNumber(value:price))!
print(result) // "10,005,000"
문자열 값에 콤마를 넣고 싶으면, 문자열을 숫자형으로 변환하고 나서 처리 하면 된다.
let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = .decimal
let price = Double("10005000")!
let result = numberFormatter.string(from: NSNumber(value:price))!
print(result) // "10,005,000"
이것으로 모든게 잘 해결되는 줄 알았는데…
소수점이 들어갔을때, 최대 소수점 3자리까지만 출력이… OTL
let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = .decimal
let price = Double("10005000.123456789")!
let result = numberFormatter.string(from: NSNumber(value:price))!
print(result) // "10,005,000.123"
소수점 자릿수를 그대로 유지하기 위해 String
을 Extension 하였다.
extension String {
/**
숫자형 문자열에 3자리수 마다 콤마 넣기
Double형으로 형변환 되지 않으면 원본을 유지한다.
```swift
let stringValue = "10005000.123456789"
print(stringValue.insertComma)
// 결과 : "10,005,000.123456789"
```
*/
var insertComma: String {
let numberFormatter = NumberFormatter();
numberFormatter.numberStyle = .decimal
// 소수점이 있는 경우 처리
if let _ = self.range(of: ".") {
var numberArray = self.components(separatedBy: ".")
if numberArray.count == 1 {
var numberString = numberArray[0]
if numberString.isEmpty {
numberString = "0"
}
guard let doubleValue = Double(numberString) else {
return self
}
return numberFormatter.string(from: NSNumber(value: doubleValue)) ?? self
} else if numberArray.count == 2 {
var numberString = numberArray[0]
if numberString.isEmpty {
numberString = "0"
}
guard let doubleValue = Double(numberString) else {
return self
}
return (numberFormatter.string(from: NSNumber(value: doubleValue)) ?? numberString) + ".\(numberArray[1])"
}
} else {
guard let doubleValue = Double(self) else {
return self
}
return numberFormatter.string(from: NSNumber(value: doubleValue)) ?? self
}
return self
}
}
코드는 좀 더 개선할 필요가 있지만, 이제 문자열에 콤마(`,) 넣는것을 쉽게 사용 할 수 있다.
"10005000.123456789".insertComma
// 결과 : "10,005,000.123456789"
반응형
'iOS > Tip' 카테고리의 다른 글
Cookies 저장과 값 읽기 (0) | 2016.11.28 |
---|---|
UIView, UIWebView 캡쳐하기 (0) | 2016.11.04 |
TextView, TextField에 메뉴 추가 하기 (0) | 2016.10.14 |
아이폰 개발 기준 해상도 (1) | 2016.10.14 |
iOS 앱 이름과 버전 정보 가져오기 (0) | 2016.10.11 |
iOS 10에서 Privacy 설정 (1) | 2016.10.10 |
문자열을 URL 타입으로 인코딩 하기 (0) | 2016.10.06 |
Apple App ID (0) | 2016.09.30 |