दिलचस्प पोस्ट
@ संश्लेषण बनाम @ गतिशील, अंतर क्या हैं? एकल या दोहरे उद्धरण से घिरा नहीं हुआ स्थान का उपयोग कर स्ट्रिंग को विभाजित करने के लिए रेगेक्स मैं आईआईएस 7.5 पर एएसपी.नेट फॉर्म प्रमाणीकरण के साथ स्थिर फाइलों की रक्षा कैसे करूं? क्या सीएसएस को एक आधे चरित्र में लागू करना संभव है? बाहरी एसडी कार्ड स्थान खोजें ब्राउज़र में एक AJAX (XmlHttpRequest) कॉल पर टाइमआउट का पता कैसे लगा सकता है? ऊपरी बनाम लोअर केस ब्राउज़र में जावा बटन के साथ एक लिंक खोलें? एक बैच फ़ाइल से एक exe के लिए एक शॉर्टकट बनाने MySQL 1062 – कुंजी 'प्राथमिक' के लिए '0' की डुप्लिकेट प्रविष्टि पायथन पूर्णांक ++ के साथ बढ़ते हुए दूसरे सरणी के दूसरे मंद के सूचकांक के रूप में एक अंडाकार सरणी का उपयोग करना? ऑपरेटर से अधिक या उससे कम का उपयोग करते हुए दो सूचियों की तुलना करना सी ++ स्थिर स्थिर स्ट्रिंग (कक्षा सदस्य) जावा में स्ट्रिंग्स की अक्षमता

Xx-xx-xxx में UITextField प्रारूप

मैं UITextField का उपयोग कर रहा हूँ और मुझे यह चाहिए कि वह xx-xx-xxx के प्रारूप में चरित्र को लेना चाहिए, केवल संख्याएं

कोई मदद ?

वेब के समाधान से एकत्रित समाधान "Xx-xx-xxx में UITextField प्रारूप"

नीचे का प्रयास करें यह काम करेगा

उद्देश्य सी

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { int groupingSize = 2; if([string length] == 0) { groupingSize = 4; } NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init] ; NSString *separator = @"-"; [formatter setGroupingSeparator:separator]; [formatter setGroupingSize:groupingSize]; [formatter setUsesGroupingSeparator:YES]; [formatter setSecondaryGroupingSize:2]; if (![string isEqual: @""] && (textField.text != nil && textField.text.length > 0)) { NSString *num = textField.text; num = [num stringByReplacingOccurrencesOfString:separator withString:@""]; NSString *str = [formatter stringFromNumber:[NSNumber numberWithDouble:[num doubleValue]]]; textField.text = str; } return YES; } 

स्विफ्ट -3

 extension ViewController: UITextFieldDelegate { func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { var groupSize = 2 let separator = "-" if string.characters.count == 0 { groupSize = 4 } let formatter = NumberFormatter() formatter.groupingSeparator = separator formatter.groupingSize = groupSize formatter.usesGroupingSeparator = true formatter.secondaryGroupingSize = 2 if var number = textField.text, string != "" { number = number.replacingOccurrences(of: separator, with: "") if let doubleVal = Double(number) { let requiredString = formatter.string(from: NSNumber.init(value: doubleVal)) textField.text = requiredString } } return true } } 

एक चर प्रारूप के साथ एक फोन नंबर के लिए यह अच्छी तरह से करने की ज़रूरत थी, यहां लिखा है कि मैंने क्या लिखा है। पुन: उपयोग करने के लिए बेझिझक – पहले मुझे एक स्वरूपित स्ट्रिंग फ़िल्टर करने का एक तरीका मिला है, # नंबर होने के साथ, और किसी भी अन्य पात्र को "भराव" के कुछ प्रकार के रूप में जोड़ा जाना चाहिए, जिसे उपयोगकर्ता को उस स्थान पर पहुंचाया जाना चाहिए जहां इसकी आवश्यकता है ।

 NSMutableString *filteredPhoneStringFromStringWithFilter(NSString *string, NSString *filter) { NSUInteger onOriginal = 0, onFilter = 0, onOutput = 0; char outputString[([filter length])]; BOOL done = NO; while(onFilter < [filter length] && !done) { char filterChar = [filter characterAtIndex:onFilter]; char originalChar = onOriginal >= string.length ? '\0' : [string characterAtIndex:onOriginal]; switch (filterChar) { case '#': if(originalChar=='\0') { // We have no more input numbers for the filter. We're done. done = YES; break; } if(isdigit(originalChar)) { outputString[onOutput] = originalChar; onOriginal++; onFilter++; onOutput++; } else { onOriginal++; } break; default: // Any other character will automatically be inserted for the user as they type (spaces, - etc..) or deleted as they delete if there are more numbers to come. outputString[onOutput] = filterChar; onOutput++; onFilter++; if(originalChar == filterChar) onOriginal++; break; } } outputString[onOutput] = '\0'; // Cap the output string return [NSString stringWithUTF8String:outputString]; } 

अब ताकि वे पूरक के माध्यम से हटा सकते हैं, मैंने संशोधित किया है कि मेरी सीमाओं में वर्ण बदलना चाहिए।

 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { NSString *filter = @"(###) ### - ####"; if(!filter) return YES; // No filter provided, allow anything NSString *changedString = [textField.text stringByReplacingCharactersInRange:range withString:string]; if(range.length == 1 && // Only do for single deletes string.length < range.length && [[textField.text substringWithRange:range] rangeOfCharacterFromSet:[NSCharacterSet characterSetWithCharactersInString:@"0123456789"]].location == NSNotFound) { // Something was deleted. Delete past the previous number NSInteger location = changedString.length-1; if(location > 0) { for(; location > 0; location--) { if(isdigit([changedString characterAtIndex:location])) { break; } } changedString = [changedString substringToIndex:location]; } } textField.text = filteredPhoneStringFromStringWithFilter(changedString, filter); return NO; } 

यह उपयोगकर्ताओं को किसी विशेष प्रारूप में नंबरों को दर्ज करने के लिए बाध्य करने के लिए एक बहुत ही स्वच्छ तरीका प्रदान करता है।

textField:shouldChangeCharactersInRange:replacementString: अंदर अपने तर्क को लागू करें textField:shouldChangeCharactersInRange:replacementString: जो एक प्रतिनिधि विधि है।

स्विफ्ट की लंबी तरह की विधि, लेकिन ठीक काम करती है: आईओएस 8

ViewController // प्रोग्रामिंग मार्क —– —– ——— —– ——— —– —-

 override func viewDidAppear(animated: Bool) { super.viewDidAppear(animated) self.tfCardNumber.addTarget(self, action: "creditCardNumberFormatter:", forControlEvents: .EditingChanged) self.tfExpiryValue.addTarget(self, action: "creditCardExpiryFormatter:", forControlEvents: .EditingChanged) }// end viewDidAppear func creditCardNumberFormatter(sender: AnyObject!) { // create object universally access global methods var objMethodInc = MethodInc(object: self) var formattedText = objMethodInc.formatCreditCard(self.tfCardNumber.text) if formattedText != self.tfCardNumber.text { self.tfCardNumber.text = formattedText } if countElements(self.tfCardNumber.text) == 19 { self.tfCardNumber.resignFirstResponder() self.tfExpiryValue.becomeFirstResponder() } }// end creditCardNumberFormatter func creditCardExpiryFormatter(sender: AnyObject!) { // create object universally access global methods var objMethodInc = MethodInc(object: self) var formattedText = objMethodInc.formatCreditCardExpiry(self.tfExpiryValue.text) if formattedText != self.tfExpiryValue.text { self.tfExpiryValue.text = formattedText } }// end creditCardExpiryFormatter 

// प्राइम एम मार्क ——- — —-

 // delegate for textfield func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange , replacementString string: String) -> Bool { if string == "" { return true } if textField == self.tfCardNumber { if countElements(self.tfCardNumber.text) > 18 { return false } else if textField == self.tfExpiryValue { if countElements(self.tfExpiryValue.text) > 4 { return false } } } return true }// end textField 

———– अपनी कमांड विधि या फ़ाइल अंदर ——–

// प्राइम एम मार्क —-

 func formatCreditCard(input: NSString) -> String { var input = self.trimSpecialCharacters(input); println("formatCreditCard input \(input)") var output : NSString? switch (input.length) { case 1: output = input case 2: output = input case 3: output = input case 4: var vs = input.substringToIndex(input.length) output = NSString(string: "\(vs)") break case 5: output = input case 6: output = input case 7: output = input case 8: var vs1 = input.substringToIndex(4) var vs2 = input.substringFromIndex(4) output = NSString(string: "\(vs1)-\(vs2)") break case 9: output = input case 10: output = input case 11: output = input case 12: var vs1 = input.substringToIndex(4) var vs2 = input.substringWithRange(NSMakeRange(4, 4)) var vs3 = input.substringFromIndex(8) output = NSString(string: "\(vs1)-\(vs2)-\(vs3)") break case 13: output = input case 14: output = input case 15: output = input case 16: var vs1 = input.substringToIndex(4) var vs2 = input.substringWithRange(NSMakeRange(4, 4)) var vs3 = input.substringWithRange(NSMakeRange(8, 4)) var vs4 = input.substringFromIndex(12) output = NSString(string: "\(vs1)-\(vs2)-\(vs3)-\(vs4)") break default: output = input break }// end switch println("formatCreditCard out \(output!)") return output! }// end formatCreditCard // prgm mark ---- func formatCreditCardExpiry(input: NSString) -> String { var output : NSString? var input = self.trimSpecialCharacters(input); switch (input.length) { case 1: output = input case 2: var vs = input.substringToIndex(input.length) output = NSString(string: "\(vs)") break case 3: output = input case 4: var vs1 = input.substringToIndex(2) var vs2 = input.substringFromIndex(2) output = NSString(string: "\(vs1)/\(vs2)") break default: output = input break } return output! }// end formatCreditCardExpiry func trimSpecialCharacters(input: NSString) -> NSString { var special = NSCharacterSet(charactersInString: "/+-() ") var comp = input.componentsSeparatedByCharactersInSet(special) as NSArray return comp.componentsJoinedByString("") }//end trimSpecialCharacters 

हर किसी के जवाबों को देखने के बाद यहां पर ये मेरे पास ले जाता है

स्विफ्ट 4

 func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { let separator = "-" let filler = "X" if var number = textField.text, string != "" { number = number.replacingOccurrences(of: separator, with: "") number = number.replacingOccurrences(of: filler, with: "") print(number.count) if number.count == 10 { return false } number += string while number.count < 10 { number += "X" } number.insert("-", at: number.index(number.startIndex, offsetBy: 6)) number.insert("-", at: number.index(number.startIndex, offsetBy: 3)) textField.text = number } return false } 

मेरी Google खोज मुझे बताती है कि आपको कार्यान्वित करना चाहिए

 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 

UITextFieldDelegate प्रोटोकॉल से

अधिक जानकारी के लिए इस पर एक नज़र डालें

यदि आप इसे किसी तिथि की तरह कुछ करना चाहते हैं तो आप इस तरह अपना खुद का डेट फॉर्मेटर बना सकते हैं:

 NSDateFormatter *formatter; NSString *dateString; formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"dd-MM-yyyy HH:mm"]; //or something in your own style dateString = [formatter stringFromDate:[NSDate date]]; [formatter release]; // maybe; you might want to keep the formatter // if you're doing this a lot. 

उद्देश्य सी में कस्टम प्रारूप में स्ट्रिंग में वर्तमान समय प्राप्त करना