Разделитель триад в любых числовых значениях

Без долгих вступлений и СЕО-якорей — сразу к делу.
Для того чтобы добавить разделитель триад к любым числовым значениям нужно написать два расширения — одно для класса Formatter, а второе для числового типа, например Int или UInt32.

//
// proSwift.ru
//


extension Formatter {
    static let withSeparator: NumberFormatter = {
        let formatter = NumberFormatter()
        formatter.groupingSeparator = " "
        formatter.numberStyle = .decimal
        return formatter
    }()
}

extension UInt32 {
    var formattedWithSeparator: String {
        return Formatter.withSeparator.string(for: self) ?? ""
    }
}

Теперь добавим проверочный код, чтобы посмотреть результат:

//
// proSwift.ru
//

for i in 1...100 {
    let n = arc4random_uniform(999999)
    print("Шаг \(i): \(n.formattedWithSeparator)")
}

И посмотрим на результат в консоль:

Шаг 1: 296 823
Шаг 2: 763 911
Шаг 3: 286 234
Шаг 4: 485 144
Шаг 5: 298 800
Шаг 6: 23 355
Шаг 7: 722 522
Шаг 8: 550 207
...

Соответственно, вместо пробела можно использовать любой разделитель, например апостроф. Его просто нужно указать в расширении класса Formatter.

...
Шаг 34: 66'205
Шаг 35: 976'677
Шаг 36: 144'400
Шаг 37: 553'068
Шаг 38: 303'803
Шаг 39: 499'897
Шаг 40: 166'388
Шаг 41: 986'202
...




Добавить комментарий

Ваш адрес email не будет опубликован.

*

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.