दिलचस्प पोस्ट
नकारात्मक मूल्यों के साथ मॉड्यूलो ऑपरेटर जेएसपी / सर्लेट अनुरोध के रूप में यूनिकोड वर्ण कैसे पास करें। त्रुटि 'नामित पाइप्स प्रदाता को कैसे ठीक कर सकता हूं, त्रुटि 40 -' SQL सर्वर 'के लिए कनेक्शन नहीं खोल सकता है? मनमाना-सटीक अंकगणितीय स्पष्टीकरण Json सरणी के माध्यम से जावास्क्रिप्ट पाश? सी एक समारोह के एक आदेश को छोड़कर? कंडीशनल लिंक क्वेरीज़ मैं एक धागा कैसे मार सकता हूं? स्टॉप () का उपयोग किए बिना; डेटा एसएमएस संदेश भेजने और प्राप्त करने के तरीके पास पैरामीटर पी: जावास्क्रिप्ट से दूरसंचार चार * const और const char * के बीच अंतर क्या है? एक निर्माता में वर्चुअल सदस्य कॉल यूआईएलएबल ऊंचाई को टेक्स्ट में समायोजित करें JQuery में एक <UL> / <OL> आदेश का सबसे आसान तरीका क्या है? डेटा की अप्रत्याशित दृढ़ता

फोन नंबर स्वरूपण

मेरे पास टेक्स्ट फ़ील्ड है जहां उपयोगकर्ता डेटा में प्रवेश करता है। यह एक फ़ोन नंबर फ़ील्ड है अगर उपयोगकर्ता 1234567890 प्रवेश करता है, तो मुझे इसे (123)-(456)-7890 रूप में उपयोगकर्ता प्रकार के रूप में प्रदर्शित करना चाहिए। यह कैसे संभव है?

वेब के समाधान से एकत्रित समाधान "फोन नंबर स्वरूपण"

इससे आपकी मदद मिलेगी

प्रारूप (xxx) xxx-xxxx

 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { int length = (int)[self getLength:textField.text]; //NSLog(@"Length = %d ",length); if(length == 10) { if(range.length == 0) return NO; } if(length == 3) { NSString *num = [self formatNumber:textField.text]; textField.text = [NSString stringWithFormat:@"(%@) ",num]; if(range.length > 0) textField.text = [NSString stringWithFormat:@"%@",[num substringToIndex:3]]; } else if(length == 6) { NSString *num = [self formatNumber:textField.text]; //NSLog(@"%@",[num substringToIndex:3]); //NSLog(@"%@",[num substringFromIndex:3]); textField.text = [NSString stringWithFormat:@"(%@) %@-",[num substringToIndex:3],[num substringFromIndex:3]]; if(range.length > 0) textField.text = [NSString stringWithFormat:@"(%@) %@",[num substringToIndex:3],[num substringFromIndex:3]]; } return YES; } - (NSString *)formatNumber:(NSString *)mobileNumber { mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@"(" withString:@""]; mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@")" withString:@""]; mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@" " withString:@""]; mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@"-" withString:@""]; mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@"+" withString:@""]; NSLog(@"%@", mobileNumber); int length = (int)[mobileNumber length]; if(length > 10) { mobileNumber = [mobileNumber substringFromIndex: length-10]; NSLog(@"%@", mobileNumber); } return mobileNumber; } - (int)getLength:(NSString *)mobileNumber { mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@"(" withString:@""]; mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@")" withString:@""]; mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@" " withString:@""]; mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@"-" withString:@""]; mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@"+" withString:@""]; int length = (int)[mobileNumber length]; return length; } 

यह अधिक स्पष्ट महसूस किया गया और किसी भी अवांछित पात्रों को और अधिक अच्छी तरह से निकालने का प्रबंधन करता है 1 (###) ### – #### या (###) के लिए ठीक से फ़ॉर्मेट करें ### – ####

 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string]; NSArray *components = [newString componentsSeparatedByCharactersInSet:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]]; NSString *decimalString = [components componentsJoinedByString:@""]; NSUInteger length = decimalString.length; BOOL hasLeadingOne = length > 0 && [decimalString characterAtIndex:0] == '1'; if (length == 0 || (length > 10 && !hasLeadingOne) || (length > 11)) { textField.text = decimalString; return NO; } NSUInteger index = 0; NSMutableString *formattedString = [NSMutableString string]; if (hasLeadingOne) { [formattedString appendString:@"1 "]; index += 1; } if (length - index > 3) { NSString *areaCode = [decimalString substringWithRange:NSMakeRange(index, 3)]; [formattedString appendFormat:@"(%@) ",areaCode]; index += 3; } if (length - index > 3) { NSString *prefix = [decimalString substringWithRange:NSMakeRange(index, 3)]; [formattedString appendFormat:@"%@-",prefix]; index += 3; } NSString *remainder = [decimalString substringFromIndex:index]; [formattedString appendString:remainder]; textField.text = formattedString; return NO; } 

कोड का उपयोग मैं आम तौर पर इसका इस्तेमाल करते हैं। प्रारूप अलग है, लेकिन आपको चित्र मिलता है। यह इनपुट को संभालता है जैसे '123df # $ @ $ gdfg45- + 678dfg901' और आउटपुट '1 (234) 567-8 901'

 #import "NSString+phoneNumber.h" @implementation NSString (phoneNumber) -(NSString*) phoneNumber{ static NSCharacterSet* set = nil; if (set == nil){ set = [[NSCharacterSet decimalDigitCharacterSet] invertedSet]; } NSString* phoneString = [[self componentsSeparatedByCharactersInSet:set] componentsJoinedByString:@""]; switch (phoneString.length) { case 7: return [NSString stringWithFormat:@"%@-%@", [phoneString substringToIndex:3], [phoneString substringFromIndex:3]]; case 10: return [NSString stringWithFormat:@"(%@) %@-%@", [phoneString substringToIndex:3], [phoneString substringWithRange:NSMakeRange(3, 3)],[phoneString substringFromIndex:6]]; case 11: return [NSString stringWithFormat:@"%@ (%@) %@-%@", [phoneString substringToIndex:1], [phoneString substringWithRange:NSMakeRange(1, 3)], [phoneString substringWithRange:NSMakeRange(4, 3)], [phoneString substringFromIndex:7]]; case 12: return [NSString stringWithFormat:@"+%@ (%@) %@-%@", [phoneString substringToIndex:2], [phoneString substringWithRange:NSMakeRange(2, 3)], [phoneString substringWithRange:NSMakeRange(5, 3)], [phoneString substringFromIndex:8]]; default: return nil; } } @end 

हमने फ़ोन नंबरों के लिए कस्टम NSFormatter उप-वर्ग लिखा है: https://github.com/edgecase/PhoneNumberFormatter

आप इसे किसी भी अन्य NSFormatter उपवर्ग की तरह उपयोग कर सकते हैं।

पहले जवाब के लिए बहुत बहुत धन्यवाद, लेकिन मुझे लगता है, उस पद्धति -(int)getLength:(NSString*)mobileNumber बेकार है। आप नीचे की तरह कुछ कोशिश कर सकते हैं:

 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ int length = [[self formatNumber:[textField text]] length]; if (length == 10) { if(range.length == 0) { return NO; } } if (length == 3) { NSString *num = [self formatNumber:[textField text]]; textField.text = [NSString stringWithFormat:@"(%@) ",num]; if (range.length > 0) { [textField setText:[NSString stringWithFormat:@"%@",[num substringToIndex:3]]]; } } else if (length == 6) { NSString *num = [self formatNumber:[textField text]]; [textField setText:[NSString stringWithFormat:@"(%@) %@-",[num substringToIndex:3],[num substringFromIndex:3]]]; if (range.length > 0) { [textField setText:[NSString stringWithFormat:@"(%@) %@",[num substringToIndex:3],[num substringFromIndex:3]]]; } } return YES; } - (NSString*)formatNumber:(NSString*)mobileNumber { mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@"(" withString:@""]; mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@")" withString:@""]; mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@" " withString:@""]; mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@"-" withString:@""]; mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@"+" withString:@""]; int length = [mobileNumber length]; if (length > 10) { mobileNumber = [mobileNumber substringFromIndex: length-10]; } return mobileNumber; } 

आप में से उन लोगों के लिए जो अंतरराष्ट्रीय नंबर स्वरूपण की आवश्यकता है: https://code.google.com/p/libphonenumber/

सी ++, जावा और जावास्क्रिप्ट लागूकरण के साथ आता है। एक। एमएम फ़ाइल में सी + + कार्यान्वयन लपेट करना आसान होना चाहिए और इसके चारों ओर एक छोटे उद्देश्य-सी आवरण लिखना चाहिए।

एक वैध विकल्प है https://github.com/iziz/libPhoneNumber-iOS अन्य सभी उत्तर केवल संभावनाओं और संयोजनों का एक छोटा सा हिस्सा कवर करते हैं, यह लाइब्रेरी वास्तव में प्रत्येक फ़ोन नंबर को पार्स करता है और मान्य करता है, और पहचानता है:

  • राष्ट्रीयता
  • फोन नंबर प्रकार
  • राष्ट्रीय वाहक

यूएस फोन नंबर के लिए प्रासंगिक:

@ वान के पद को जोड़ना, मैंने एक सशर्त बयान जोड़ा है, अगर उपयोगकर्ता देश कोड (1) के साथ शुरू होता है। इस प्रकार, यह प्रारूप होगा: 1 (XXX) XXX-XXXX की बजाय (1XX) XXX-XXXX

  - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ textField = self.phoneNumberTextField; NSInteger length = [self getLength:textField.text]; //NSLog(@"Length = %d ",length); if ([textField.text hasPrefix:@"1"]) { if(length == 11) { if(range.length == 0) return NO; } if(length == 4) { NSString *num = [self formatNumber:textField.text]; textField.text = [NSString stringWithFormat:@"%@ (%@) ",[num substringToIndex:1],[num substringFromIndex:1]]; if(range.length > 0) textField.text = [NSString stringWithFormat:@"%@",[num substringToIndex:4]]; } else if(length == 7) { NSString *num = [self formatNumber:textField.text]; NSRange numRange = NSMakeRange(1, 3); textField.text = [NSString stringWithFormat:@"%@ (%@) %@-",[num substringToIndex:1] ,[num substringWithRange:numRange],[num substringFromIndex:4]]; if(range.length > 0) textField.text = [NSString stringWithFormat:@"(%@) %@",[num substringToIndex:3],[num substringFromIndex:3]]; } } else { if(length == 10) { if(range.length == 0) return NO; } if(length == 3) { NSString *num = [self formatNumber:textField.text]; textField.text = [NSString stringWithFormat:@"(%@) ",num]; if(range.length > 0) textField.text = [NSString stringWithFormat:@"%@",[num substringToIndex:3]]; } else if(length == 6) { NSString *num = [self formatNumber:textField.text]; textField.text = [NSString stringWithFormat:@"(%@) %@-",[num substringToIndex:3],[num substringFromIndex:3]]; if(range.length > 0) textField.text = [NSString stringWithFormat:@"(%@) %@",[num substringToIndex:3],[num substringFromIndex:3]]; } } return YES; } -(NSString*)formatNumber:(NSString*)mobileNumber { mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@"(" withString:@""]; mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@")" withString:@""]; mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@" " withString:@""]; mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@"-" withString:@""]; mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@"+" withString:@""]; NSLog(@"%@", mobileNumber); NSInteger length = [mobileNumber length]; if(length > 10) { mobileNumber = [mobileNumber substringFromIndex: length-10]; NSLog(@"%@", mobileNumber); } return mobileNumber; } -(NSInteger)getLength:(NSString*)mobileNumber { mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@"(" withString:@""]; mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@")" withString:@""]; mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@" " withString:@""]; mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@"-" withString:@""]; mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@"+" withString:@""]; NSInteger length = [mobileNumber length]; return length; } 

शायद आप इस सरल विधि का उपयोग कर सकते हैं:

 + (NSString*) formatPhoneNumber:(NSString *)phoneNumber codeLength:(int) code segmentLength:(int) segment { NSString* result = @""; int length = [phoneNumber length]; NSString* firstSegment = @""; NSString* restSegment = @""; for (int i=0; i<length; i++) { char c = [phoneNumber characterAtIndex:i]; if(i < code) firstSegment = [firstSegment stringByAppendingFormat:@"%c", c]; else { restSegment = [restSegment stringByAppendingFormat:@"%c", c]; int threshold = (i - code) + 1; if((threshold % segment == 0) && (threshold > 0) && !(threshold > length)) restSegment = [restSegment stringByAppendingFormat:@"%c", '-']; } } result = [result stringByAppendingFormat:@"%@-%@", firstSegment, restSegment]; return result; } 

ऊपर की विधि मानते हुए Contact वर्ग में है, बस इस तरह से विधि का प्रयोग करें:

 NSString* phoneNumber = @"085755023455"; NSString* formattedNumber = [Contact formatPhoneNumber:phoneNumber codeLength:3 segmentLength:4]; 

ऐसा कुछ परिणाम होगा:

 085-7550-2345-5 

आप इसके लिए AKNumericFormatter लाइब्रेरी का उपयोग कर सकते हैं। इसमें फॉर्मेटर और सुविधाजनक यूआईटीफ़फ़ाल्ड श्रेणी है, यह एक कोकोपॉड के रूप में उपलब्ध है।

आईओएस में फोन स्वरूपण कैसे करें, इसके बारे में सबसे व्यापक उत्तर के सी # एक्समारिन.आईओएस संस्करण नीचे दिया गया है

  public override void ViewDidLoad() { base.ViewDidLoad(); PhoneNumberTextField.ShouldChangeCharacters = ChangeCharacters; } private bool ChangeCharacters(UITextField textField, NSRange range, string replacementString) { var text = textField.Text; var newString = text.Substring(0, range.Location) + replacementString + text.Substring(range.Location + range.Length); var decimalString = Regex.Replace(newString, @"[^\d]", string.Empty); var length = decimalString.Length; var hasLeadingOne = length > 0 && decimalString[0] == '1'; if ((length == 0) || (length > 10 && !hasLeadingOne) || (length > 11)) { textField.Text = decimalString; return false; } var index = 0; var formattedString = ""; if (hasLeadingOne) { formattedString += "1"; index += 1; } if (length - index > 3) { var areaCode = decimalString.Substring(index, 3); formattedString += "(" + areaCode + ")"; index += 3; } if (length - index > 3) { var prefix = decimalString.Substring(index, 3); formattedString += " " + prefix + "-"; index += 3; } var remainder = decimalString.Substring(index); formattedString += remainder; textField.Text = formattedString; return false; } 

स्विफ्ट फॉर्मेटेड फ़ोन नंबर

प्रतिद्वंद्वी @ डैटिन के जवाब में सुधार, इनपुट जैसे 1123df#$@$gdfg45-+678dfg901 आउटपुट के रूप में +11(234)567-8901

 func formattedPhone(phone: String) -> String? { let notPhoneNumbers = NSCharacterSet.decimalDigitCharacterSet().invertedSet let str = phone.componentsSeparatedByCharactersInSet(notPhoneNumbers).joinWithSeparator("") let startIdx = str.startIndex let endIdx = str.endIndex let count = str.characters.count if count == 7 { return "\(str[startIdx..<startIdx.advancedBy(3)])-\(str[startIdx.advancedBy(3)..<endIdx])" }else if count == 10{ return "(\(str[startIdx..<startIdx.advancedBy(3)]))\(str[startIdx.advancedBy(3)..<startIdx.advancedBy(6)])-\(str[startIdx.advancedBy(6)..<endIdx])" } else if count > 10{ let extra = str.characters.count - 10 return "+\(str[startIdx..<startIdx.advancedBy(extra)])(\(str[endIdx.advancedBy(-10)..<endIdx.advancedBy(-7)]))\(str[endIdx.advancedBy(-7)..<endIdx.advancedBy(-4)])-\(str[endIdx.advancedBy(-4)..<endIdx])" } return nil } 
 NSString *str=@"[+]+91[0-9]{10}"; NSPredicate *no=[NSPredicate predicateWithFormat:@"SELF MATCHES %@",str]; if([no evaluateWithObject:txtMobileno.text]==NO { UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Warning" message:@"Please Enter correct contact no." delegate:self cancelButtonTitle:@"ok" otherButtonTitles:nil]; [alert show]; [alert release]; } 

तो यह विधि (xxx) xxx – xxxx …. के लिए प्रारूपित होगी
यह वर्तमान शीर्ष उत्तर का एक संशोधन है और बैकस्पेस का प्रबंधन करता है

 - (IBAction)autoFormat:(UITextField *)sender { NSString *mobileNumber = [NSString stringWithFormat:@"%@",sender.text]; mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@"(" withString:@""]; mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@")" withString:@""]; mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@" " withString:@""]; mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@"-" withString:@""]; mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@"+" withString:@""]; int length = [mobileNumber length]; if(length > 0 && [sender.text length] > self.oldLength){ if(length >= 7 && length <= 10){ sender.text = [NSString stringWithFormat:@"(%@) %@ - %@",[mobileNumber substringToIndex:3], [mobileNumber substringWithRange:NSMakeRange(3,3)],[mobileNumber substringWithRange:NSMakeRange(6,[mobileNumber length]-6)]]; } else if(length >= 4 && length <= 6) { sender.text = [NSString stringWithFormat:@"(%@) %@",[mobileNumber substringToIndex:3], [mobileNumber substringWithRange:NSMakeRange(3,[mobileNumber length]-3)]]; } if(length >= 11 && length % 4 == 3){ NSString *lastChar = [sender.text substringFromIndex:[sender.text length] - 1]; sender.text = [NSString stringWithFormat:@"%@ %@",[sender.text substringToIndex:[sender.text length] - 1],lastChar]; } self.oldLength = [sender.text length]; } else if([sender.text length] < self.oldLength) { NSLog(@"deleted - "); self.oldLength = 0; sender.text = @""; for (int i = 0; i < [mobileNumber length]; i = i + 1) { sender.text = [NSString stringWithFormat:@"%@%@",sender.text,[mobileNumber substringWithRange:NSMakeRange(i, 1)]]; [self autoFormat:sender]; } }} 

आशा करता हूँ की ये काम करेगा

REFormattedNumberField शायद सबसे अच्छा है। बस आप चाहते हैं कि एक प्रारूप की आपूर्ति

प्रारूप + x (xxx) xxx-xx-xx के लिए भी आप इस सरल समाधान की तरह कुछ का उपयोग कर सकते हैं:

 + (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string]; NSArray *components = [newString componentsSeparatedByCharactersInSet:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]]; NSString *decimalString = [components componentsJoinedByString:@""]; if (decimalString.length > 11) { return NO; } NSMutableString *formattedString = [NSMutableString stringWithString:decimalString]; [formattedString insertString:@"+" atIndex:0]; if (formattedString.length > 2) [formattedString insertString:@" (" atIndex:2]; if (formattedString.length > 7) [formattedString insertString:@") " atIndex:7]; if (formattedString.length > 12) [formattedString insertString:@"-" atIndex:12]; if (formattedString.length > 15) [formattedString insertString:@"-" atIndex:15]; textField.text = formattedString; return NO;} 

स्विफ्ट

 func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool { let length = self.getTextLength(textField.text) if length == 10{ if range.length == 0{ return false } } if length == 3{ var num : String = self.formatNumber(textField.text) textField.text = num + "-" if(range.length > 0){ textField.text = (num as NSString).substringToIndex(3) } } else if length == 6{ var num : String = self.formatNumber(textField.text) let prefix = (num as NSString).substringToIndex(3) let postfix = (num as NSString).substringFromIndex(3) textField.text = prefix + "-" + postfix + "-" if range.length > 0{ textField.text = prefix + postfix } } return true } func getTextLength(mobileNo: String) -> NSInteger{ var str : NSString = mobileNo as NSString str = str.stringByReplacingOccurrencesOfString("(", withString: "") str = str.stringByReplacingOccurrencesOfString(")", withString: "") str = str.stringByReplacingOccurrencesOfString(" ", withString: "") str = str.stringByReplacingOccurrencesOfString("-", withString: "") str = str.stringByReplacingOccurrencesOfString("+", withString: "") return str.length } func formatNumber(mobileNo: String) -> String{ var str : NSString = mobileNo as NSString str = str.stringByReplacingOccurrencesOfString("(", withString: "") str = str.stringByReplacingOccurrencesOfString(")", withString: "") str = str.stringByReplacingOccurrencesOfString(" ", withString: "") str = str.stringByReplacingOccurrencesOfString("-", withString: "") str = str.stringByReplacingOccurrencesOfString("+", withString: "") if str.length > 10{ str = str.substringFromIndex(str.length - 10) } return str as String } 
 +(NSString *) phoneNumberFormatterTextField:(NSString *)number forRange:(NSRange)range { int length = (int)[[self getPhoneNumber:number] length]; if(length == 3) { NSString *num = [MPosBaseScreenController getPhoneNumber:number]; number = [num stringByReplacingOccurrencesOfString:@"(\\d{3})" withString:@"($1) " options:NSRegularExpressionSearch range:NSMakeRange(0, num.length)]; } else if(length == 6 || length > 6 ) { NSString *num = [MPosBaseScreenController getPhoneNumber:number]; number = [num stringByReplacingOccurrencesOfString:@"(\\d{3})(\\d{3})" withString:@"($1) $2 - " options:NSRegularExpressionSearch range:NSMakeRange(0, num.length)]; } return number; } 

यहां एक सरल श्रेणी है जो इनपुट के स्वरूप की नकल करेगा

 @interface NSString (formatDecimalsAs) - (NSString *)formatDecimalsAs:(NSString *)formattedDecimals; @end @implementation NSString (formatDecimalsAs) - (NSString *)formatDecimalsAs:(NSString *)formattedDecimals { // insert non-digit characters from source string NSMutableString *formattedNumber = [self mutableCopy]; for (int i = 0; i < formattedDecimals.length; i++) { if (i > formattedNumber.length) { break; } unichar character = [formattedDecimals characterAtIndex:i]; if ([[NSCharacterSet decimalDigitCharacterSet].invertedSet characterIsMember:character]) { [formattedNumber insertString:[NSString stringWithFormat:@"%c", character] atIndex:(NSUInteger) i]; } } return formattedNumber; } @end 

उदाहरण का उपयोग करें

 [@"87654321" formatDecimalsAs:@"1111 1111"] // returns @"8765 4321" 
  1. सभी गैर अंकों वाले वर्ण निकालता है
  2. यदि 7 अंक शेष हैं, तो 123-4567
  3. 10 अंक के लिए, (123) 456-78 9 0
  4. अन्यथा, तीन के समूह समूहों के आकार को समायोजित करने के लिए, उपरोपित करने के लिए निर्दिष्ट मान को बदलें

     -(NSString*)formatPhone:(NSString*)phone { NSString *formattedNumber = [[phone componentsSeparatedByCharactersInSet: [[NSCharacterSet decimalDigitCharacterSet] invertedSet]] componentsJoinedByString:@""]; int substrSize = 3; NSMutableArray *t = [[NSMutableArray alloc] initWithCapacity:formattedNumber.length / substrSize + 1]; switch (formattedNumber.length) { case 7: formattedNumber = [NSString stringWithFormat:@"%@-%@", [formattedNumber substringToIndex:3], [formattedNumber substringFromIndex:3]]; break; case 10: formattedNumber = [NSString stringWithFormat:@"(%@) %@-%@", [formattedNumber substringToIndex:3], [formattedNumber substringWithRange:NSMakeRange(3, 3)], [formattedNumber substringFromIndex:6]]; break; default: for (int i = 0; i < formattedNumber.length / substrSize; i++) { [t addObject:[formattedNumber substringWithRange:NSMakeRange(i * substrSize, substrSize)]]; } if (formattedNumber.length % substrSize) { [t addObject:[formattedNumber substringFromIndex:(substrSize * t.count)]]; } formattedNumber = [t componentsJoinedByString:@" "]; break; } return formattedNumber; } 

स्विफ्ट 3 में

 func formattedPhone(phone: String) -> String? { let notPhoneNumbers = CharacterSet.decimalDigits.inverted let str = phone.components(separatedBy: notPhoneNumbers).joined(separator: "") let startIdx = str.startIndex let endIdx = str.endIndex let count = str.characters.count if count == 7 { return "\(str[startIdx..<startIdx.advance(3, for: str)])-\(str[startIdx.advance(3, for: str)..<endIdx])" }else if count == 10{ return "+1 (\(str[startIdx..<startIdx.advance(3, for: str)])) \(str[startIdx.advance(3, for: str)..<startIdx.advance(6, for: str)])-\(str[startIdx.advance(6, for: str)..<endIdx])" } else if count > 10{ let extra = str.characters.count - 10 return "+\(str[startIdx..<startIdx.advance(extra, for: str)]) (\(str[endIdx.advance(-10, for: str)..<endIdx.advance(-7, for: str)])) \(str[endIdx.advance(-7, for: str)..<endIdx.advance(-4, for: str)])-\(str[endIdx.advance(-4, for: str)..<endIdx])" } return nil } 

स्विफ्ट 3 स्ट्रिंग। इंडेक्स। उन्नत (3) वैकल्पिक:

 extension String.Index{ func advance(_ offset:Int, `for` string:String)->String.Index{ return string.index(self, offsetBy: offset) } } 

इससे आपकी मदद मिलेगी

SWIFT 3.0 के लिए प्रारूप (xxx) xxx-xxxx

 func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { let length = Int(getLength(mobileNumber: textField.text!)) if length == 15 { if range.length == 0 { return false } } if length == 3 { let num = self.formatNumber(mobileNumber: textField.text!) textField.text = NSString(format:"(%@)",num) as String if range.length > 0{ let index: String.Index = num.index(num.startIndex, offsetBy: 3) textField.text = NSString(format:"%@",num.substring(to: index)) as String } }else if length == 6 { let num = self.formatNumber(mobileNumber: textField.text!) let index: String.Index = num.index(num.startIndex, offsetBy: 3) textField.text = NSString(format:"(%@) %@-",num.substring(to: index), num.substring(from: index)) as String if range.length > 0{ textField.text = NSString(format:"(%@) %@",num.substring(to: index), num.substring(from: index)) as String } } return true } func formatNumber(mobileNumber: String) -> String { var number = mobileNumber number = number.replacingOccurrences(of: "(", with: "") number = number.replacingOccurrences(of: ")", with: "") number = number.replacingOccurrences(of: " ", with: "") number = number.replacingOccurrences(of: "-", with: "") number = number.replacingOccurrences(of: "+", with: "") let length = Int(number.characters.count) if length > 15 { let index = number.index(number.startIndex, offsetBy: 15) number = number.substring(to: index) } return number } func getLength(mobileNumber: String) -> Int { var number = mobileNumber number = number.replacingOccurrences(of: "(", with: "") number = number.replacingOccurrences(of: ")", with: "") number = number.replacingOccurrences(of: " ", with: "") number = number.replacingOccurrences(of: "-", with: "") number = number.replacingOccurrences(of: "+", with: "") let length = Int(number.characters.count) return length } 

पहले, अपने .h फ़ाइल में UITextFieldDelegate जोड़ें और nib फ़ाइल में अपना UITextField नियुक्त करें।

दूसरा, यह फ़ाइल आपके .m फ़ाइल में जोड़ें:

  - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { NSString *filter = @"(###)-(###)-####"; if(!filter) return YES; NSString *changedString = [textField.text stringByReplacingCharactersInRange:range withString:string]; if(range.length == 1 && string.length < range.length && [[textField.text substringWithRange:range] rangeOfCharacterFromSet:[NSCharacterSet characterSetWithCharactersInString:@"0123456789"]].location == NSNotFound) { NSInteger location = changedString.length-1; if(location > 0) { for(; location > 0; location--) { if(isdigit([changedString characterAtIndex:location])) { break; } } changedString = [changedString substringToIndex:location]; } } textField.text = [self filteredPhoneStringFromStringWithFilter:changedString :filter]; return NO; } -(NSString*) filteredPhoneStringFromStringWithFilter:(NSString*)number : (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 >= number.length ? '\0' : [number 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]; }