- (NSString*)reverseWordsInString:(NSString*)oldStr{
NSMutableString *newStr = [[NSMutableString alloc] initWithCapacity:oldStr.length];
for (int i = (int)oldStr.length - 1; i >= 0; i --) {
unichar character = [oldStr characterAtIndex:i];
[newStr appendFormat:@"%c",character];
}
return newStr;
}
-(BOOL)validateBankCard{
NSString *string = self;
NSCharacterSet *characterSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789\b"];
string = [string stringByReplacingOccurrencesOfString:@" " withString:@""];
if ([string rangeOfCharacterFromSet:[characterSet invertedSet]].location != NSNotFound) {
return NO;
}
// 1、从卡号最后一位数字开始,偶数位乘以2,如果乘以2的结果是两位数,将结果减去9。
// 2、把所有数字相加,得到总和。
// 3、如果信用卡号码是合法的,总和可以被10整除。
//先倒序
NSString *reverstring = [self reverseWordsInString:self];
int total = 0;
for (int i =0;i< (int)reverstring.length - 1; i ++) {
int character = [[reverstring substringWithRange:NSMakeRange(i, 1)] intValue] ;// (int) [reverstring characterAtIndex:i];
if (i%2==0) {
character=2*character;
if (character>10) {
character -=9;
}
}else{
character=character;
}
total +=character;
}
NSLog(@"total%d",total);
if (total%10==0) {
return YES;
}else{
return NO;
}
}