Подтвердить что ты не робот

Как добавить запятую в число в swift?

Как бы добавить запятые к числу, которое я извлекаю из JSON в swift.

Example
31908551587 to
31,908,551,587

Я так смущен, и я понятия не имею, что делать.

4b9b3361

Ответ 1

Вы можете сделать это с помощью NSNumberFormatter

Swift 3

 let largeNumber = 31908551587
 let numberFormatter = NumberFormatter()
 numberFormatter.numberStyle = NumberFormatter.Style.decimal
 let formattedNumber = numberFormatter.string(from: NSNumber(value:largeNumber))

Swift 2

 let largeNumber = 31908551587
 let numberFormatter = NSNumberFormatter()
 numberFormatter.numberStyle = NSNumberFormatterStyle.DecimalStyle
 let formattedNumber = numberFormatter.stringFromNumber(largeNumber)

Ответ 2

Развернув на Özgür Ersil ответ, вы можете выделить функциональность с расширением Int:

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

Затем используйте код:

largeNumber.withCommas()

Ответ 3

Также, на вопрос Хуана Фран Хименеса, я бы порекомендовал помещать форматировщик в одноэлементный, так как создание экземпляра форматирования обычно является относительно дорогостоящей операцией. (Это может повлиять на производительность, если вы форматируете на ходу, как пишет пользователь.)

extension Int {

    private static var commaFormatter: NumberFormatter = {
        let formatter = NumberFormatter()
        formatter.numberStyle = .decimal
        return formatter
    }()

    internal var commaRepresentation: String {
        return Int.commaFormatter.string(from: NSNumber(value: self)) ?? ""
    }
}