개발/iOS

[iOS][Swift] 세자리 콤마 넣기

라니킴 2023. 1. 25. 16:03

NumberFormatter 를 이용해 천 단위마다  comma(" , ") 넣기

 

1. 입력 값이 정수인 경우

var intValue = 123456

let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = .decimal
let result = numberFormatter.string(from: NSNumber(value: intValue))!


print(result) //"123,456"

 

2. 입력 값이 문자열인 경우

var strValue = "1111123456"

extension String {
   
    public var insertComma: String {
        let numberFormatter = NumberFormatter()
        numberFormatter.numberStyle = .decimal
        
        if let _ = self.range(of: ".") {
            let 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
    }
}

//결과

print(strValue.insertComma) //"1,111,123,456"