숫자에 콤마넣기 (more!)
숫자에 콤마 넣기 (swift2)
숫자 세자리마다 콤마를 넣는 것은 NSNumberFormatter를 이용하면 간단히 할 수 있다.
let formatNumber: (Int) -> String = { n in
let f = NSNumberFormatter()
f.numberStyle = .DecimalStyle
return f.stringFromNumber(NSNumber(integer: n))!
}
이는 정규식으로도 할 수 있다. (이와 관련한 글을 이전에 작성한 바 있다 : 참고 )
let formatNumber: (Int) -> String = { n
let s = "\(n)"
let regex = try? NSRegularExpression(
pattern:"(?<=\\d)(?=(?:\\d{3})+(?!\\d))",
options:[])
return regex!.stringByReplacingMatchesInString(s,
options:[],
range:NSMakeRange(0, s.characters.count),
withTemplate:",")
}
만약, 네자리마다 콤마를 넣고 싶다면? 정규식의 경우 숫자 묶음의 크기만 변경해주면 된다.
let formatNumber: (Int) -> String = { n
let s = "\(n)"
let regex = try? NSRegularExpression(
pattern:"(?<=\\d)(?=(?:\\d{3})+(?!\\d))",
options:[])
return regex!.stringByReplacingMatchesInString(s,
options:[],
range:NSMakeRange(0, s.characters.count),
withTemplate:",")
}
NSNumberFormatter
를 쓰는 경우에도 방법이 없는 것은 아니다. NSNumberFormatter의 groupingSize
속성은 몇 개 단위로 숫자를 끊을 것인지를 결정하는 값이다.
let formatNumber: (Int) -> String = { n in
let f = NSNumberFormatter()
f.numberStyle = .DecimalStyle
return f.stringFromNumber(NSNumber(integer: n))!
}