一聚教程网:一个值得你收藏的教程网站

热门教程

iOS判断身份证号码是否正确的方法

时间:2022-06-26 06:07:00 编辑:袖梨 来源:一聚教程网

①根据百度百科中身份证号码的标准实现该方法

②该方法只能判断18位身份证,且不能判断身份证号码和姓名是否对应(要看姓名和号码是否对应,应该有大量的数据库做对比才能实现)

③直接copy这段代码,就能通过调用这个方法判断身份证号码是否符合标准,非常easy

 

 代码如下复制代码

/**

 * 验证身份证号码是否正确的方法

 *

 * @param IDNumber 传进身份证号码字符串

 *

 * @return 返回YES或NO表示该身份证号码是否符合国家标准

 */

- (BOOL)isCorrect:(NSString *)IDNumber

{

  NSMutableArray *IDArray = [NSMutableArray array];

  // 遍历身份证字符串,存入数组中

  for(inti = 0; i < 18; i++) {

    NSRange range = NSMakeRange(i, 1);

    NSString *subString = [IDNumber substringWithRange:range];

    [IDArray addObject:subString];

  }

  // 系数数组

  NSArray *coefficientArray = [NSArray arrayWithObjects:@"7", @"9", @"10", @"5", @"8", @"4", @"2", @"1", @"6", @"3", @"7", @"9", @"10", @"5", @"8", @"4", @"2", nil];

  // 余数数组

  NSArray *remainderArray = [NSArray arrayWithObjects:@"1", @"0", @"X", @"9", @"8", @"7", @"6", @"5", @"4", @"3", @"2", nil];

  // 每一位身份证号码和对应系数相乘之后相加所得的和

  intsum = 0;

  for(inti = 0; i < 17; i++) {

    intcoefficient = [coefficientArray[i] intValue];

    intID = [IDArray[i] intValue];

    sum += coefficient * ID;

  }

  // 这个和除以11的余数对应的数

  NSString *str = remainderArray[(sum % 11)];

  // 身份证号码最后一位

  NSString *string = [IDNumber substringFromIndex:17];

  // 如果这个数字和身份证最后一位相同,则符合国家标准,返回YES

  if([str isEqualToString:string]) {

    returnYES;

  }else{

    returnNO;

  }

}

 

热门栏目