2015-06-24 8 views

risposta

85

È possibile farlo con 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) 
+0

grazie mille ha funzionato! –

+0

c'è un modo per fare come questo '31, 90,85,51,587 'usando NumberFormatter? –

+0

@SanketBhavsar non penso così [check] (https://developer.apple.com/reference/foundation/numberformatter.style) –

6

Ampliando la risposta di Özgür Ersil, è possibile isolare la funzionalità con un'extesion Int:

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

Per poi utilizzare sul vostro codice come:

largeNumber.withCommas() 
5

espansione anche sulla risposta di Juan Fran Jimenez, mi sento di raccomandare di mettere il formattatore in un Singleton, dal momento che istanziare un formattatore di solito è un'operazione relativamente costosa. (Potrebbe influire sulle prestazioni se si sta formattando mentre l'utente scrive.)

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)) ?? "" 
    } 
} 
Problemi correlati