본문 바로가기
iOS_Swift 앱개발👍

[iOS_Swift] TextField (,) 콤마 제거 후 숫자 계산 _ 25

by 개발하는윤기사 2022. 10. 3.
728x90
반응형

안녕하세요 이웃님들! 

 

개발하는 윤기사입니다. 오늘 포스팅은 저번 포스팅에 연장선인데요! 

 

저번 포스팅을 안읽고 오신 분은 한 번 읽어보시고 오시면 좋을 것 같습니다.

 

[iOS_Swift] TextField 천의 자리마다 (,)콤마 찍기_ 24

안녕하세요 이웃님들!! 개발하는 윤기사입니다~ 최근 개인 앱 출시 준비하느라 블로그에 소홀했던 점!! 죄송합니다...ㅠ.ㅠ (너무 바빴어요...🥲) 그래서 오늘부터 올려드리는 포스팅들은 개인

swiftyun.tistory.com

 

 

복리 계산기 기능을 만들다가 마주한 문제점은 텍스트 필드에 천의 자리마다 (,) 콤마를 찍어주었는데 생각해보니

 

계산을 할 때는 '100,000 + 10,000'이 아닌 '100000 + 10000'으로 계산이 되어야 하더라고요?

 

그렇다면 드는 생각이 '100,000'이라는 숫자는 text로 String 형태이고, 이걸 Int나 Float으로 바꿔줘서 계산을 해야 하는데 

 

천의 자리가 넘어 간다면 찍힌 (,) 콤마를 빼줘야 하잖아요..? (벌써 복잡하다)

 

그래서 혹시나 저처럼 TextField의 쓰인 숫자로 계산을 하고자 하시는 분들을 위해 준비했습니다.

 

바로 시작해보시죠!

 

 

 

 

1. 가장 첫 번째로 '100,000'이라고 표시된 text의 값의 (,) 콤마를 없애겠습니다. String의 extension 함수를 하나 만들어줍니다.

extension String {

func replace( target: String,  withString: String) -> String {
        return self.replacingOccurrences(of: target, with: withString, options: NSString.CompareOptions.literal, range: nil)
    }
    
}

 

 

2. 텍스트 필드의 내용을 변수로 지정해주고, 위에서 만든 함수를 호출해서 ","를 ""으로 바꿔줍니다. 그리곤 바뀐 내용을 Float형식으로 전환합니다. (Int가 아닌 Float 형태로 변환한 이유는 계산 시 소수점 계산도 필요했기 때문입니다.) 

var replaceComma = TextField.text ?? ""
replaceComma = replaceComma.replace(target: ",", withString: "") //콤마 없애기
guard let replaceCommaFloat = Float(replaceComma) else { return }

 

 

3. 변환시킨 값인 replaceCommaFloat으로 계산을 해주시면 됩니다. 마지막으로 계산을 완료하고 나면 콤마가 없는 형태(ex. 100000)로 나올 텐데 그럴 땐 Float의 Extension으로 plusCommas 함수를 만들어줘서 결과값에 붙이면 됩니다.

extension Float {
    
    func plusCommas() -> String {
        let numberFormatter = NumberFormatter()
        numberFormatter.numberStyle = .decimal
        return numberFormatter.string(from: NSNumber(value: self))!
    }
    
}

EX) resultLabel.text = "결과값은" + round(3.0 + 5.1).plusCommas()

 

이상 오늘 포스팅은 여기서 마치겠습니다!

 

개발하는 윤기사는 오늘도 빡코딩 하도록 하겠습니다 😎

728x90
반응형