验证银行卡号格式是否正确

- (BOOL) checkCardNo:(NSString*) cardNo{  
    int oddsum = 0;     //奇数求和  
    int evensum = 0;    //偶数求和  
    int allsum = 0;  
    int cardNoLength = (int)[cardNo length];  
    int lastNum = [[cardNo substringFromIndex:cardNoLength-1] intValue];  
      
    cardNo = [cardNo substringToIndex:cardNoLength - 1];  
    for (int i = cardNoLength -1 ; i>=1;i--) {  
        NSString *tmpString = [cardNo substringWithRange:NSMakeRange(i-1, 1)];  
        int tmpVal = [tmpString intValue];  
        if (cardNoLength % 2 ==1 ) {  
            if((i % 2) == 0){  
                tmpVal *= 2;  
                if(tmpVal>=10)  
                    tmpVal -= 9;  
                evensum += tmpVal;  
            }else{  
                oddsum += tmpVal;  
            }  
        }else{  
            if((i % 2) == 1){  
                tmpVal *= 2;  
                if(tmpVal>=10)  
                    tmpVal -= 9;  
                evensum += tmpVal;  
            }else{  
                oddsum += tmpVal;  
            }  
        }  
    }  
      
    allsum = oddsum + evensum;  
    allsum += lastNum;  
    if((allsum % 10) == 0)  
        return YES;  
    else  
        return NO;  
}  

YES为正确,NO为错误

原文地址:https://www.cnblogs.com/wlsxmhz/p/5711490.html