我如何将逗号添加到我正在从swift中的JSON中检索的数字中.
Example
31908551587 to
31,908,551,587
Run Code Online (Sandbox Code Playgroud)
我很困惑,我不知道该怎么做.
Özg*_*sil 137
你可以做到 NSNumberFormatter
斯威夫特3
let largeNumber = 31908551587
let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = .decimal
let formattedNumber = numberFormatter.string(from: NSNumber(value:largeNumber))
Run Code Online (Sandbox Code Playgroud)
斯威夫特2
let largeNumber = 31908551587
let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = NumberFormatter.Style.decimal
let formattedNumber = numberFormatter.string(from: NSNumber(value:largeNumber))
Run Code Online (Sandbox Code Playgroud)
Jua*_*nez 26
扩展ÖzgürErsil的答案,您可以通过扩展到Int来隔离功能:
extension Int {
func withCommas() -> String {
let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = NumberFormatter.Style.decimal
return numberFormatter.string(from: NSNumber(value:self))!
}
}
Run Code Online (Sandbox Code Playgroud)
然后在您的代码上使用:
largeNumber.withCommas()
Run Code Online (Sandbox Code Playgroud)
Jul*_*oud 11
在扩展Juan Fran Jimenez的答案时,我建议将格式化程序放入单例中,因为实例化格式化程序通常是一种相对昂贵的操作.(如果您在用户写入时随时进行格式化,则可能会影响性能.)
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)) ?? ""
}
}
Run Code Online (Sandbox Code Playgroud)
这是设置逗号位置的另一种方法。假设我希望将数字 10000000 打印为“1,00,00,000”
let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = .decimal
numberFormatter.groupingSize = 3
numberFormatter.secondaryGroupingSize = 2
numberFormatter.string(from: 10000000)
Run Code Online (Sandbox Code Playgroud)
一个简单的扩展名下降将通过扩展名提供变量Int。
正如朱利安(Julien)的回答所述,出于性能原因,此方法使用了静态格式化程序。
extension Int {
private static var numberFormatter: NumberFormatter = {
let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = .decimal
return numberFormatter
}()
var delimiter: String {
return Int.numberFormatter.string(from: NSNumber(value: self)) ?? ""
}
}
Run Code Online (Sandbox Code Playgroud)
要使用它:
let number = 31908551587
print(number.delimiter) // 31,908,551,587
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
33125 次 |
| 最近记录: |