如何在swift中将逗号添加到数字?

     2023-04-14     145

关键词:

【中文标题】如何在swift中将逗号添加到数字?【英文标题】:how to add commas to a number in swift? 【发布时间】:2015-06-24 08:13:29 【问题描述】:

如何将逗号添加到我从 swift 中的 JSON 检索的数字中。

Example
31908551587 to
31,908,551,587

我很困惑,我不知道该怎么办。

【问题讨论】:

【参考方案1】:

你可以用NSNumberFormatter做到这一点

斯威夫特 4

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

斯威夫特 3

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

斯威夫特 2

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

【讨论】:

有什么方法可以使用 NumberFormatter 来做这样的 '31,90,85,51,587' 吗? @SanketBhavsar 我不这么认为check @ÖzgürErsil 我用货币(风格)做到了 如何做反向 有什么方法可以将 1000000000000000 转换为 1,000,000,000,000,000 吗?因为这些适用于数字后的七个 0...【参考方案2】:

扩展 Özgür Ersil 的回答,您可以通过扩展至 Int 来隔离功能:

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

然后在您的代码上使用:

largeNumber.withCommas()

【讨论】:

【参考方案3】:

还扩展了 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)) ?? ""
    

【讨论】:

【参考方案4】:

一个简单的扩展插件,将通过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)) ?? ""
    

使用它:

let number = 31908551587
print(number.delimiter) // 31,908,551,587

【讨论】:

???您的代码实际上与朱利安的答案相同。唯一不同的是他有internal var,而你只有var。你的回答对谈话有什么影响?另外,我会说您的变量 delimiter 具有误导性。 Julien 的commaRepresentation 更有用。【参考方案5】:

这是另一种设置逗号位置的方法。假设我希望将数字 10000000 打印为“1,00,00,000”

let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = .decimal
numberFormatter.groupingSize = 3
numberFormatter.secondaryGroupingSize = 2
numberFormatter.string(from: 10000000)

【讨论】:

当数字包含点 10000000.12 时,此代码不起作用【参考方案6】:

斯威夫特 4

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

【讨论】:

【参考方案7】:

我为金额文本字段创建了一个类。只需将其设置为您的文本字段类。 Ex- 输入 1234567。它将转换为 1,234,567 也适用于小数输入,小数点后取两位数。

class AmountField: UITextField 

private var isFirstDecimal : Bool = true
override func willMove(toSuperview newSuperview: UIView?) 

    addTarget(self, action: #selector(editingChanged), for: .editingChanged)
    keyboardType = .decimalPad
    textAlignment = .left
    placeholder = "0.0"
    editingChanged()

override func deleteBackward() 
    var currentText = self.text ?? ""
    currentText = String(currentText.dropLast())
    self.text = currentText
    editingChanged(self)

@objc func editingChanged(_ textField: UITextField? = nil) 
    var doubleStr = textField?.text ?? "00"


    let decimalCount = doubleStr.components(separatedBy: ".")
    if decimalCount.count > 2 
        var currentText = self.text ?? ""
        currentText = String(currentText.dropLast())
        self.text = currentText
        return
    

    if doubleStr.contains(".") && isFirstDecimal == true 
        self.text = doubleStr
        isFirstDecimal = false
        return
    
    else if !(doubleStr.contains(".")) 
        isFirstDecimal = true
    

    let doubleStrTemp = doubleStr.replacingOccurrences(of: ",", with: "")

    if doubleStrTemp != "" 
        if let n = Decimal(string: doubleStrTemp )?.significantFractionalDecimalDigits 
            if n > 2 
                var currentText = self.text ?? ""
                currentText = String(currentText.dropLast())
                self.text = currentText
                return
            
        
    
    doubleStr = doubleStr.replacingOccurrences(of: ",", with: "")

    let doube = Double(doubleStr)
    let numberFormatter = NumberFormatter()
    numberFormatter.numberStyle = NumberFormatter.Style.decimal
    if doube != nil 
        let formattedNumber = numberFormatter.string(from: NSNumber(value:doube!))
        self.text = formattedNumber
    


extension Decimal 
var significantFractionalDecimalDigits: Int 
    return max(-exponent, 0)

【讨论】:

不,我正在使用 NSNumberFormatter。对于十进制和其他验证,我设置了单独的条件。

在 Swift 中将小数点后的逗号和零值添加到千位后的数字字符串中

】在Swift中将小数点后的逗号和零值添加到千位后的数字字符串中【英文标题】:AddcommaandzerovalueafterdecimaltoastringofNumberafterthousandinSwift【发布时间】:2019-11-1410:48:16【问题描述】:您好,我从后端API获取字符串类型的价格,我试... 查看详情

在C#中将逗号添加到整数[重复]

...我想提升程序以猜测1到1,000,000之间,但我可以\'t弄清楚如何将逗号添加到整数(或者如果允许的话),以便在打印到控制台时更容易让玩家阅读。int 查看详情

使用 Swift 在 SpriteKit 中将自定义“数字”图像作为分数添加到 SKLabelNode

】使用Swift在SpriteKit中将自定义“数字”图像作为分数添加到SKLabelNode【英文标题】:Addcustom"number"imagestoSKLabelNodeinasaScoreinSpriteKitwithSwift【发布时间】:2016-09-1119:17:59【问题描述】:我基本上想在Singles中添加自定义字体编... 查看详情

如何在 Swift 中将 TextField 添加到 UIAlertView

】如何在Swift中将TextField添加到UIAlertView【英文标题】:HowtoaddaTextFieldtoUIAlertViewinSwift【发布时间】:2014-06-0704:19:36【问题描述】:我有这段代码,但我不知道如何在UIAlertView中显示文本字段。varaltMessage=UIAlertController(title:"Warning",m... 查看详情

如何在 Swift 3 中将图像添加到 UIAlertbox?

】如何在Swift3中将图像添加到UIAlertbox?【英文标题】:HowAddImageintoUIAlertboxinSwift3?【发布时间】:2017-03-1009:46:00【问题描述】:我想在UIAlertbox中添加图片,所以我添加了以下代码。letalertController=UIAlertController(title:"Gender",message:"",... 查看详情

如何在 Swift 中将图像添加到 ARSCNScene?

】如何在Swift中将图像添加到ARSCNScene?【英文标题】:HowtoaddanimagetoanARSCNSceneinSwift?【发布时间】:2018-03-1821:44:13【问题描述】:我在开发我正在开发的Swift游乐场时偶然发现了障碍。我想将图像添加到我的ARSCNScene(ARKit+SceneKit)。... 查看详情

如何在 Swift 3 中将 NSConstraints 添加到 UITextView

】如何在Swift3中将NSConstraints添加到UITextView【英文标题】:HowtoaddNSConstraintstoUITextViewinSwift3【发布时间】:2016-09-0620:59:34【问题描述】:所以我已经成功地将我的几乎所有项目转换为Swift3,除了我手动添加约束的一个视图控制器... 查看详情

如何在 swift 3 中将滑动手势添加到 AVPlayer

】如何在swift3中将滑动手势添加到AVPlayer【英文标题】:HowcanIaddSwipeGesturetoAVPlayerinswift3【发布时间】:2017-05-3114:56:58【问题描述】:我正在使用Swift3,我想将滑动手势添加到AVPlayer。有人告诉我,为了做到这一点,我必须使用另... 查看详情

如何在 swift 3 中将 MKPolylines 添加到 MKSnapShotter?

】如何在swift3中将MKPolylines添加到MKSnapShotter?【英文标题】:HowdoyouaddMKPolylinestoMKSnapShotterinswift3?【发布时间】:2016-07-1822:18:57【问题描述】:有没有办法截取mapView并包含折线?我相信我需要在MKSnapShotter返回的图像上绘制CGPoint... 查看详情

如何在 Swift 或 Objective C 中将文本添加到文件中?

】如何在Swift或ObjectiveC中将文本添加到文件中?【英文标题】:HowtoPREPENDtexttoafileinSwiftorObjectiveC?【发布时间】:2017-02-1522:07:13【问题描述】:请注意,我不是在询问如何在文件末尾附加文本。我在问如何在文件开头添加文本。le... 查看详情

如何在 Swift 中将数组添加到我的 JSON 字典

】如何在Swift中将数组添加到我的JSON字典【英文标题】:HowdoIaddanarraytomyJSONdictionaryinSwift【发布时间】:2015-03-0215:45:46【问题描述】:我在我的ios应用程序中使用swift,当涉及到数组时,我需要帮助来创建发布请求。我需要在http... 查看详情

如何在 Swift 3 中将 UIButton 添加到我的 UITableViewCell 中?

】如何在Swift3中将UIButton添加到我的UITableViewCell中?【英文标题】:HowdoIaddaUIButtonintomyUITableViewCellinSwift3?【发布时间】:2016-11-2818:03:40【问题描述】:我有一个现有的UITableView可以显示数据并且工作正常。但是我现在想在这个UITab... 查看详情

如何在swift中将标题视图添加到每个自定义tableViewCells

】如何在swift中将标题视图添加到每个自定义tableViewCells【英文标题】:howtoaddheaderviewtoeachofcustomtableViewCellsinswift【发布时间】:2021-02-2617:12:44【问题描述】:我有两个自定义TableViewCell。所以第一个TableViewCell就像一个最近的列表... 查看详情

REACT - 如何在 Mui-Datatables 中将逗号分隔符添加到整数值

】REACT-如何在Mui-Datatables中将逗号分隔符添加到整数值【英文标题】:REACT-HowtoaddcommaseparatortointegervalueinMui-Datatables【发布时间】:2020-11-2014:09:43【问题描述】:在我的mui-datatables中,我有一个整数形式的薪水列,我想在其中添加... 查看详情

如何在 swift Xcode 中将 TextView 添加到 VStack 的顶部?

】如何在swiftXcode中将TextView添加到VStack的顶部?【英文标题】:HowtoaddaTextViewtothetopofaVStackinswiftXcode?【发布时间】:2021-11-0212:40:32【问题描述】:我想在我的应用程序的文本字段上放置一个文本视图。我在代码中将UITextView添加到... 查看详情

逗号自动添加到 Swift 中的 TextField

】逗号自动添加到Swift中的TextField【英文标题】:CommaAutomaticallyBeingAddedtoTextFieldinSwift【发布时间】:2015-06-0623:02:31【问题描述】:我正在开发一个状态栏应用程序。目前我只有一个下拉菜单,可以退出应用程序或打开首选项窗口... 查看详情

如何在swift ios中将多个图像添加到自定义表格视图单元格?

】如何在swiftios中将多个图像添加到自定义表格视图单元格?【英文标题】:Howtoaddmultipleimagestotocustomtableviewcellinswiftios?【发布时间】:2016-12-2106:00:26【问题描述】:我的自定义表格视图单元格中有一个imageView。我将多张图片复... 查看详情

如何在 Swift 中将键值对添加到类型为 [String:AnyObject] 的字典中?

】如何在Swift中将键值对添加到类型为[String:AnyObject]的字典中?【英文标题】:Howtoaddakeyvaluepairtoadictionaryoftype[String:AnyObject]inSwift?【发布时间】:2016-09-3018:35:23【问题描述】:我已将JSON文件的内容存储在[[String:AnyObject]]类型的字... 查看详情