我想知道是否有人可以向我说明以下几点:我有一个文本字段,可以将自身格式化为货币格式(这样可以很好地为用户显示),例如$ 100,000,000.00。我需要将其作为双精度对象,我已经尝试了一些方法,并且我想出的最好的方法是转换为双精度对象,但是从上面的示例中获得了10.0,而不是完整的100000000.00。如果你们能帮助我,我将不胜感激!谢谢!
class MainScreen: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.hideKeyboard()
moneySpentTextField.addTarget(self, action: #selector(moneySpentTextFieldDidChange), for: .editingChanged)
moneySpentTextField.delegate = self
}
@objc func moneySpentTextFieldDidChange(_ textField: UITextField) {
if let amountString = moneySpentTextField.text?.currencyInputFormatting() {
moneySpentTextField.text = amountString
}
}
extension String {
// formatting text for currency textField
func currencyInputFormatting() -> String {
var number: NSNumber!
let formatter = NumberFormatter()
formatter.numberStyle = .currency
formatter.locale = Locale.current
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 "$0"
}
return formatter.string(from: number)!
}
答案 0 :(得分:0)
var i = "$100,000,000.00"
var number: NSNumber!
let formatter = NumberFormatter()
formatter.numberStyle = .currency
formatter.locale = Locale.current
// remove from String: "$", ".", ","
let regex = try! NSRegularExpression(pattern: "[^0-9]", options: .caseInsensitive)
var amountWithPrefix = regex.stringByReplacingMatches(in: i, options: NSRegularExpression.MatchingOptions(rawValue: 0), range: NSMakeRange(0, i.count), withTemplate: "")
let double = (amountWithPrefix as NSString).doubleValue
number = NSNumber(value: (double / 100))
// if first number is 0 or all numbers were deleted
print(number)
输出:100000000
您的代码正确。