国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > iOS > 正文

iOS 中 使用UITextField格式化銀行卡號碼的解決方案

2019-10-21 18:49:47
字體:
來源:轉載
供稿:網友

今天做格式化銀行卡,避免重復造輪子,找度娘查了下,看到一個不錯的實現方式,記錄下來,并附帶實現思路

#pragma mark - UITextFieldDelegate UITextField鍵入字符后調用- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { //拿到為改變前的字符串 NSString *text = [textField text]; //鍵入字符集,/b標示刪除鍵 NSCharacterSet *characterSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789/b"]; //對當前鍵入字符進行空格過濾 string = [string stringByReplacingOccurrencesOfString:@" " withString:@""]; //invertedSet會對當前結果集取反,檢查當前鍵入字符是否在字符集合中,如果不在則直接返回NO 不改變textField值 if ([string rangeOfCharacterFromSet:[characterSet invertedSet]].location != NSNotFound) {  return NO; } //增加當前鍵入字符在改變前的字符串尾部 text = [text stringByReplacingCharactersInRange:range withString:string]; //再次確認去掉字符串中空格 text = [text stringByReplacingOccurrencesOfString:@" " withString:@""]; //初始化字符用來保存格式化后的字符串 NSString *newString = @""; //while中對text進行格式化 while (text.length > 0) {  //按4位字符進行截取,如果當前字符不足4位則按照當前字符串的最大長度截取  NSString *subString = [text substringToIndex:MIN(text.length, 4)];  //將截取后的字符放入需要格式化的字符串中  newString = [newString stringByAppendingString:subString];  if (subString.length == 4) {   //截取的字符串長度滿4位則在后面增加一個空格符   newString = [newString stringByAppendingString:@" "];  }  //將text中截取掉字符串去掉  text = [text substringFromIndex:MIN(text.length, 4)]; } //再次確認過濾掉除指定字符以外的字符 newString = [newString stringByTrimmingCharactersInSet:[characterSet invertedSet]]; //國內銀行卡一般為16~19位 格式化后增加4個空格 也就是最多23個字符 if (newString.length > 23) {  return NO; } //手動對textField賦值 [textField setText:newString]; //返回NO 則不通過委托自動往當前字符后面增加字符,達到格式化效果 return NO;}


注:相關教程知識閱讀請移步到IOS開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 旌德县| 青岛市| 株洲县| 湘阴县| 策勒县| 女性| 堆龙德庆县| 无棣县| 鹿泉市| 罗山县| 钦州市| 疏勒县| 贺兰县| 富平县| 韶山市| 蕉岭县| 周宁县| 车致| 怀远县| 沧源| 沂源县| 得荣县| 镇赉县| 南漳县| 宁夏| 黑山县| 临洮县| 广灵县| 清徐县| 多伦县| 绍兴市| 新平| 三亚市| 井冈山市| 崇义县| 肃宁县| 浠水县| 浠水县| 娄烦县| 丰宁| 买车|