숫자에 콤마넣기 (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))!
}