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