강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

사리곰탕님의 프로필 이미지
사리곰탕

작성한 질문수

iOS AutoLayout 완벽 가이드 - 실무 프로젝트를 위한 실전강의

Custom_Keyboard_3

"00" 혹은 "000" 입력시에 TextField의 값이 0으로 바뀜

작성

·

175

0

스스로 해결해보라고 하셔서 해결한 내용과 검증을 받고 싶어 질문 남깁니다 ~

문제는 NumberFormat으로 표시한 comma 때문에 Int로 변환시에 nil 이 되는 문제였고,

아래와 같이 String.replacingOccurrences로 해결하였는데

혹시 더 좋은 방법이 있을지 질문 드립니다.

func deliverButtonValue(number: String) {        

var currentNumber: Int?

var newNumber = Int(number)!

// customTextField의 string에서 comma를 제거

if let curr = customTextField.text {

currentNumber = Int(curr.replacingOccurrences(of: ",", with: ""))

}

if let hasNumber = currentNumber {

if number == "00" {

newNumber = hasNumber * 100

} else if number == "000" {

newNumber = hasNumber * 1000

}

}

let formatter = NumberFormatter()

formatter.numberStyle = .decimal

customTextField.text = formatter.string(from: NSNumber(value: newNumber))

}

답변 1

0

iOS Developer - 이정님의 프로필 이미지
iOS Developer - 이정
지식공유자

안녕하세요.
쉼표만 없애겠다고 하면 replacingOccurrences도 괜찮다고 생각합니다.
만약 숫자만 꺼내야겠다고 한다면 정규식을 이용하는 방법도 있습니다.
아래코드 참고하시면서 적절하게 사용하면 될 것 같습니다.
let textValue = "12,400"
let pattern = "[^0-9]"
let range = NSRange(location: 0, length: textValue.count)
let regex = try! NSRegularExpression(pattern:pattern, options:[])
let numberString = regex.stringByReplacingMatches(in: textValue, options: [], range: range, withTemplate: "")
let onlyNumber = Int(numberString)

사리곰탕님의 프로필 이미지
사리곰탕

작성한 질문수

질문하기