如何使用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 關注
- 802 瀏覽
添加回答
舉報
0/150
提交
取消
