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

时间:2017-07-30 17:21:17

标签: ios xcode uitextfield

我想要一种方法,当用户输入数字时,文本字段会用逗号和货币符号格式化数字,在这种情况下,我想要英镑符号 - £

实施例 -

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

我目前有一个允许我这样做的方法,但是,我一直得到一个小数/浮点数。

例 - 用户输入30000,文本字段将输入格式化为£30,000.00

我不想随时.00

我该如何解决这个问题?

我尝试从float更改为Int,但文本字段立即停止了。

这是我目前使用的代码 -

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)!
    } 

我需要一个带货币符号的货币符号 - £和一个货币符号。

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

您可以通过将小数位设置为0

来消除浮点数
    formatter.maximumFractionDigits = 0
    formatter.minimumFractionDigits = 0

用英镑符号获得结果

    formatter.currencySymbol = "£"

并获得没有任何标志的结果

    formatter.currencySymbol = ""