如何使用SWIFT在文本字段(從右到左)輸入貨幣格式?我有個號碼,比方說0.00.當用戶點擊1.我們應該有0.01當用戶點擊2。我們應該顯示0.12當用戶點擊3。我們應該顯示1.23當用戶點擊4。我們應該顯示12.34我怎么才能用斯威夫特做這件事?
3 回答

一只斗牛犬
TA貢獻1784條經驗 獲得超2個贊
override func viewDidLoad() { super.viewDidLoad() textField.addTarget(self, action: #selector(myTextFieldDidChange), for: .editingChanged)} 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.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)! }}

桃花長相依
TA貢獻1860條經驗 獲得超8個贊
struct DotNum { private var fraction:String = "" private var intval:String = "" init() {} mutating func enter(s:String) { if count(fraction) < 2 { fraction = s + fraction } else { intval = s + intval } } private var sFract:String { if count(fraction) == 0 { return "00" } if count(fraction) == 1 { return "0\(fraction)" } return fraction } var stringVal:String { if intval == "" { return "0.\(sFract)" } return "\(intval).\(sFract)" }}var val = DotNum()val.enter("1")val.stringVal val.enter("2")val.stringVal val.enter("3")val.stringVal val.enter("4")val.stringVal
- 3 回答
- 0 關注
- 797 瀏覽
添加回答
舉報
0/150
提交
取消