दिलचस्प पोस्ट
jQuery के सत्यापन प्लगइन: निर्दिष्ट सबमिट करें बटन के लिए सत्यापन अक्षम करें कैसे जांचने के लिए कि mysql डेटाबेस मौजूद है setTimeout कॉल के तुरंत बाद में देरी के बाद कार्य करता है कस्टम विशेषता के माध्यम से serialization से संपत्ति को छोड़ दें (json.net) थ्रॉटल इवेंट कॉल में jQuery अमेज़ॅन ईसी 2, आईएसएडीबी: एमएमएपी (एक्स बाइट्स) असफल; आईएसडीबी प्रारंभिक रूप से शुरू हो रहा है; गलत 12 गज़ले 6 का उपयोग करके आप सभी एपीआई कॉलों को कैसे लॉग करते हैं C ++ वैश्विक प्रारंभिक आदेश निर्भरताओं पर ध्यान नहीं देता? दृश्य स्टूडियो में धीमा डीबगिंग समस्या कैसे ProgressBar अद्यतनों के साथ एक BackgroundWorker को सही ढंग से लागू करने के लिए? स्विफ्ट 2 (executeFetchRequest): त्रुटि हैंडलिंग क्यों नल "वस्तु" प्रकार है? एक d3.js दृश्य लेआउट उत्तरदायी बनाने का सबसे अच्छा तरीका क्या है? AVAsset का उपयोग करते हुए फिल्म अर्रे और गीत फ़ाइल के साथ मूवी फ़ाइल बनाएं केकपीएचपी 3.0 इंस्टॉलेशन: सिस्टम से गुम होने वाली इंट्ल विस्तार

स्विफ्ट का उपयोग करके पाठ फ़ील्ड (दाएं से बाएं) पर मुद्रा प्रारूप कैसे इनपुट करें?

मेरे पास एक संख्या है, चलिए 0.00 कहते हैं।

  • उपयोगकर्ता नल जब 1. हमारे पास 0.01 होना चाहिए
  • जब उपयोगकर्ता नल 2. हम प्रदर्शित करना चाहिए 0.12
  • जब उपयोगकर्ता नल 3। हमें 1.23 प्रदर्शित करना चाहिए
  • जब उपयोगकर्ता नल 4. हम 12.34 प्रदर्शित करना चाहिए

स्विफ्ट के साथ मैं यह कैसे कर सकता हूं?

वेब के समाधान से एकत्रित समाधान "स्विफ्ट का उपयोग करके पाठ फ़ील्ड (दाएं से बाएं) पर मुद्रा प्रारूप कैसे इनपुट करें?"

स्विफ्ट 3 के लिए टेक्स्ट फ़ील्ड पर इनपुट मुद्रा प्रारूप (दाएं से बाएं)

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

आप UITextField subclassing मुद्रा पाठ फ़ील्ड बना सकते हैं। UIControlEvents के लिए एक लक्ष्य जोड़ें। अपनी टेक्स्टफील्ड स्ट्रिंग से अंकों को फ़िल्टर करने के लिए एक चयनकर्ता विधि जोड़ें। आपकी स्ट्रिंग से सभी गैर अंकों को फ़िल्टर करने के बाद आप नंबर फॉर्ममेटर का उपयोग करके फिर से अपना नंबर प्रारूपित कर सकते हैं:

Xcode 8.3.2 • स्विफ्ट 3.1

 class CurrencyField: UITextField { var string: String { return text ?? "" } var decimal: Decimal { return string.digits.decimal / Decimal(pow(10, Double(Formatter.currency.maximumFractionDigits))) } var decimalNumber: NSDecimalNumber { return decimal.number } var doubleValue: Double { return decimalNumber.doubleValue } var integerValue: Int { return decimalNumber.intValue } let maximum: Decimal = 999_999_999.99 private var lastValue: String = "" override func willMove(toSuperview newSuperview: UIView?) { // you can make it a fixed locale currency if if needed // Formatter.currency.locale = Locale(identifier: "pt_BR") // or "en_US", "fr_FR", etc addTarget(self, action: #selector(editingChanged), for: .editingChanged) keyboardType = .numberPad textAlignment = .right editingChanged() } override func deleteBackward() { text = string.digits.dropLast().string editingChanged() } func editingChanged() { guard decimal <= maximum else { text = lastValue return } lastValue = Formatter.currency.string(for: decimal) ?? "" text = lastValue print("integer:", integerValue) print("double:", doubleValue) print("decimal:", decimal) print("currency:", lastValue) } } 

 extension NumberFormatter { convenience init(numberStyle: Style) { self.init() self.numberStyle = numberStyle } } extension Formatter { static let currency = NumberFormatter(numberStyle: .currency) } extension String { var digits: [UInt8] { return characters.flatMap{ UInt8(String($0)) } } } extension Collection where Iterator.Element == UInt8 { var string: String { return map(String.init).joined() } var decimal: Decimal { return Decimal(string: string) ?? 0 } } extension Decimal { var number: NSDecimalNumber { return NSDecimalNumber(decimal: self) } } 

कोड के इस भाग को आज़माएं:

 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 

आपकी मदद के लिए मेरा अंतिम कोड धन्यवाद

 extension Double { var twoDigits: Double { let nf = NSNumberFormatter() nf.numberStyle = NSNumberFormatterStyle.DecimalStyle nf.minimumFractionDigits = 2 nf.maximumFractionDigits = 2 return self } } var cleanText:String! let number:String = sender.currentTitle as String! if(amountDisplay.text != nil) { cleanText = String(Array(amountDisplay.text!).map{String($0)}.filter{ $0.toInt() != nil }.map{Character($0)} ) as String cleanText = cleanText + number }else{ cleanText = number } amount = (Double(cleanText.toInt()!) / 100).twoDigits formatter.locale = NSLocale(localeIdentifier: currencies[current_currency_index]) amountDisplay.text = "\(formatter.stringFromNumber(amount!)!)"