本文主要是介绍iOS 银行卡号合法性判断,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
输入银行卡号的时候,一般为了卡号的合法性会做一个判断,百度一下查到了Luhn算法
Luhn算法步骤:
1、从卡号的末位开始,逆向将奇数位相加;
2、从卡号的末位开始,逆向将偶数位先乘2,如果得到的数为两位数则减9,再将得到的数求和;
3、将奇数位的和与偶数位的和相加得到的数除以10,如果可以被10整除,则这个卡号是合法的。
举个栗子:
卡号:6227612145830440(网上搜的)
奇数位的和:0+4+3+5+1+1+7+2=23
偶数位(已经减9)的和:8+0+7+8+4+3+4+3=37
23+37 = 60 可以被10整除,说明这个卡号是合法的。
而且这个算法,我个人测得信用卡(网上找的)和借记卡(周围同事的)都是通过的,说明还是比较靠谱。
下面贴出代码
- (BOOL)checkBankCardNumber:(NSString *)cardNumber
{int oddSum = 0; // 奇数和int evenSum = 0; // 偶数和int allSum = 0; // 总和// 循环加和for (NSInteger i = 1; i <= cardNumber.length; i++){NSString *theNumber = [cardNumber substringWithRange:NSMakeRange(cardNumber.length-i, 1)];int lastNumber = [theNumber intValue];if (i%2 == 0){// 偶数位lastNumber *= 2;if (lastNumber > 9){lastNumber -=9;}evenSum += lastNumber;}else{// 奇数位oddSum += lastNumber;}}allSum = oddSum + evenSum;// 是否合法if (allSum%10 == 0){return YES;}else{return NO;}
}
这篇关于iOS 银行卡号合法性判断的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!