ios - 如何使用 Swift 在文本字段(从右到左)输入货币格式?

标签 ios swift string uitextfield nsnumberformatter

我有一个数字,比如说0.00

  • 当用户点击 1 时,我们应该得到 0.01
  • 当用户点击 2 时,我们应该显示 0.12
  • 当用户点击 3 时,我们应该显示 1.23
  • 当用户点击 4 时,我们应该显示 12.34

如何使用 Swift 做到这一点?

最佳答案

对于Swift 3。在文本字段中输入货币格式(从右到左)

override func viewDidLoad() {
    super.viewDidLoad()

    textField.addTarget(self, action: #selector(myTextFieldDidChange), for: .editingChanged)
}

@objc func myTextFieldDidChange(_ textField: UITextField) {

    if let amountString = textField.text?.currencyInputFormatting() {
        textField.text = amountString
    }
}

extension String {

    // formatting text for currency textField
    func currencyInputFormatting() -> String {
    
        var number: NSNumber!
        let formatter = NumberFormatter()
        formatter.numberStyle = .currencyAccounting
        formatter.currencySymbol = "$"
        formatter.maximumFractionDigits = 2
        formatter.minimumFractionDigits = 2
    
        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.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)!
    }
}

关于ios - 如何使用 Swift 在文本字段(从右到左)输入货币格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51966539/

相关文章:

c# - 为什么比较每个 C# 字典键/值对给出不同的结果,而不是一次完成比较字典键和值?

string - 从字符串创建 utf8 编码数据的 Swift 3 方法

ios - MKMapView 随机崩溃 - VKMapCameraController

ios - 在重新加载 TableView 或重新加载特定行或插入和删除时隐藏键盘

ios - 请帮助没有意义的协议(protocol)代码

ios - 快速以编程方式打开 viewController

ios - 防止用户手动更改 slider 值 : Titanium

ios - Swift WatchOS 2.0 触觉实现问题

swift 5.5 : Asynchronously iterating line-by-line through a file

java - 如何在 Java 中比较字符串?