iOS判断用户输入的银行卡号是否正确

为了打造更好的用户体验,同时减轻服务器端的压力,对于一些如,手机号码,银行卡号,身份证号码判断是否正确是很有必要的

下面是一小段判断银行卡号输入是否正确的代码方法供大家参考

  1. - (void)viewDidLoad {  
  2.     [super viewDidLoad];  
  3. NSString *str = @"6226820011200783033";  
  4. BOOL isRight = [self checkCardNo:str];  
  5. if (!isRight) {  
  6. UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"不对" message:@"请重新输入卡号" delegate:nil cancelButtonTitle:nil otherButtonTitles:nil, nil nil];  
  7.         [alert show];  
  8.     }else{  
  9. UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"对" message:@"" delegate:nil cancelButtonTitle:nil otherButtonTitles:nil, nil nil];  
  10.         [alert show];}  
  11. }  

 ///// ****** 方法******/// 

  1. - (BOOL) checkCardNo:(NSString*) cardNo{  
  2.     int oddsum = 0;     //奇数求和  
  3.     int evensum = 0;    //偶数求和  
  4.     int allsum = 0;  
  5.     int cardNoLength = (int)[cardNo length];  
  6.     int lastNum = [[cardNo substringFromIndex:cardNoLength-1] intValue];  
  7.       
  8.     cardNo = [cardNo substringToIndex:cardNoLength - 1];  
  9.     for (int i = cardNoLength -1 ; i>=1;i--) {  
  10.         NSString *tmpString = [cardNo substringWithRange:NSMakeRange(i-1, 1)];  
  11.         int tmpVal = [tmpString intValue];  
  12.         if (cardNoLength % 2 ==1 ) {  
  13.             if((i % 2) == 0){  
  14.                 tmpVal *= 2;  
  15.                 if(tmpVal>=10)  
  16.                     tmpVal -= 9;  
  17.                 evensum += tmpVal;  
  18.             }else{  
  19.                 oddsum += tmpVal;  
  20.             }  
  21.         }else{  
  22.             if((i % 2) == 1){  
  23.                 tmpVal *= 2;  
  24.                 if(tmpVal>=10)  
  25.                     tmpVal -= 9;  
  26.                 evensum += tmpVal;  
  27.             }else{  
  28.                 oddsum += tmpVal;  
  29.             }  
  30.         }  
  31.     }  
  32.       
  33.     allsum = oddsum + evensum;  
  34.     allsum += lastNum;  
  35.     if((allsum % 10) == 0)  
  36.         return YES;  
  37.     else  
  38.         return NO;  
  39. }  
posted @ 2015-09-15 17:05  zero_zql  阅读(1930)  评论(0编辑  收藏  举报