iOS 使用UITextField自动格式化银行卡号

代码有问题,可参考最新的文章。https://blog.csdn.net/qq_25303213/article/details/90074174

 

项目中需要输入银行卡,希望自动按照4为分组格式化。

//这里没有增加银行卡长度限制

在确定提交给服务器的时候,重新格式回不带空格的字符串就好了

 

self.textField.text = [self.textField.text stringByReplacingOccurrencesOfString:@" " withString:@""];

 

 

 

 

  1. -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {  
  2.   
  3.    NSString *text = [textField text];  
  4.   
  5.     NSCharacterSet *characterSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789\b"];  
  6.     string = [string stringByReplacingOccurrencesOfString:@" " withString:@""];  
  7.     if ([string rangeOfCharacterFromSet:[characterSet invertedSet]].location != NSNotFound) {  
  8.         return NO;  
  9.     }  
  10.   
  11.     text = [text stringByReplacingCharactersInRange:range withString:string];  
  12.     text = [text stringByReplacingOccurrencesOfString:@" " withString:@""];  
  13.   
  14.     NSString *newString = @"";  
  15.     while (text.length > 0) {  
  16.         NSString *subString = [text substringToIndex:MIN(text.length, 4)];  
  17.         newString = [newString stringByAppendingString:subString];  
  18.         if (subString.length == 4) {  
  19.             newString = [newString stringByAppendingString:@" "];  
  20.         }  
  21.         text = [text substringFromIndex:MIN(text.length, 4)];  
  22.     }  
  23.   
  24.     newString = [newString stringByTrimmingCharactersInSet:[characterSet invertedSet]];  
  25.   
  26.     [textField setText:newString];  
  27.   
  28.     return NO;  
  29. }  

 

 

 

你可能感兴趣的:(iOS)