Swift/Xcode - 向UITextField添加货币符号和逗号

问题描述:

我想要一种方法,当用户输入一个数字时,文本字段将用逗号和货币符号格式化数字,在这种情况下,我希望英镑英镑符号 - £Swift/Xcode - 向UITextField添加货币符号和逗号

例 -

用户输入30000,文本字段格式化输入到£30,000

我目前确实有一个方法可以让我做到这一点,但是,我不断得到一个十进制/浮点数。

示例 - 用户输入30000,文本字段将输入格式设置为£30,000.00。我不希望.00在任何时间。

我该如何解决这个问题?

我试图从float更改为Int,但文本字段只是立即辞职。

这是我目前using-

extension String { 
    func currencyInputFormatting() -> String { 

     var number: NSNumber! 
     let formatter = NumberFormatter() 
     formatter.maximumFractionDigits = 2 
     formatter.minimumFractionDigits = 2 
     formatter.currencySymbol = "£" 
     formatter.numberStyle = .currencyAccounting 

     var amountWithPrefix = self 

     // remove from String: "$", ".", "," 
     let regex = try! NSRegularExpression(pattern: "[^0-9]", options: .caseInsensitive) 
     amountWithPrefix = regex.stringByReplacingMatches(in: amountWithPrefix, options: NSRegularExpression.MatchingOptions(rawValue: 0), range: NSMakeRange(0, self.characters.count), withTemplate: "") 

     let double = (amountWithPrefix as NSString).doubleValue 
     number = NSNumber(value: (double/100)) 

     // if first number is 0 or all numbers were deleted 
     guard number != 0 as NSNumber else { 
      return "" 
     } 

     return formatter.string(from: number)! 
    } 

的代码,我需要一个有货币符号 - £,一个没有。

有人能帮我吗?

您可以通过设置小数位数摆脱浮动点为0

formatter.maximumFractionDigits = 0 
    formatter.minimumFractionDigits = 0 

并获得与英镑符号结果

formatter.currencySymbol = "£" 

而得到的结果,没有任何迹象

formatter.currencySymbol = "" 
+0

非常感谢!我只需要改变一些代码'let double =(amountWithPrefix as NSString).intValue number = NSNumber(value:(double/1))'现在它可以工作!你这么多。 – SwiftLearner