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

來源:互聯網
上載者:User

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

#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;}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.