必威体育Betway必威体育官网
当前位置:首页 > IT技术

iOS 台湾身份证校验

时间:2019-06-21 23:42:09来源:IT技术作者:seo实验室小编阅读:50次「手机版」
 

台湾身份证号

最近由于项目需要提供一个台湾版本,其中涉及到实名认证部分。由于台湾无法使用芝麻认证,只能通过校验规则来判断了。综合网上一些资料,整理了一个方法,记录以便使用。台湾的身份证号码是10位,第一位是字母,第二位数字代表男女,后八位随机数,最后一位是用于校验身份证是否有效。

/**
 判断台湾身份证是否有效

 @param str 传入的身份证号
 @return 身份证是否有效
 */
+ (BOOL)isvalidateIDCard:(NSString *)str {
    NSString *idcard = @"^[a-zA-Z][0-9]{9}$";
    NSPredicate *regextestmobile = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", idcard];
    BOOL firstStep = [regextestmobile evaluateWithObject:str];
    if (!firstStep) {
        return firstStep;
    } else {
        NSDictionary *firstCodeDict = @{@"A": @10, @"B": @11, @"C": @12, @"D": @13, @"E": @14,
                                        @"F": @15, @"G": @16, @"H": @17, @"J": @18, @"K": @19,
                                        @"L": @20, @"M": @21, @"N": @22, @"P": @23, @"Q": @24,
                                        @"R": @25, @"S": @26, @"T": @27, @"U": @28, @"V": @29,
                                        @"X": @30, @"Y": @31, @"Z": @32, @"W": @33, @"I": @34,
                                        @"O": @35, };
        NSString *first = [[str substringWithRange:NSMakeRange(0, 1)] uppercaseString];
        NSString *mid = [str substringWithRange:NSMakeRange(1, 8)];
        NSString *end = [str substringWithRange:NSMakeRange(9, 1)];
        
        NSinteger firstCodeValue = [[firstCodeDict objectForKey:first] integerValue];
        NSInteger sum = firstCodeValue / 10 + (firstCodeValue % 10) * 9;
        
        NSMutableArray *arr = [NSMutableArray arrayWithCapacity:0];
        [mid enumerateSubstringsInRange:NSMakeRange(0, mid.length) options:NSStringEnumerationBycomposedCharactersequences usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {
            [arr addObject:substring];
        }];
        
        for (NSInteger i = 8; i > 0; i--) {
            NSInteger index = [arr[8 - i] integerValue];
            sum = sum + index * i;
        }
        return (sum % 10 == 0 ? 0 : (10 - sum % 10)) == [end integerValue] ? YES : NO;
    }
}

相关阅读

台湾桔熊——淘宝名店推荐

近些年来台湾风情风靡全中国,而随着电子商务的发展使得这股风潮进一步流行开来,今天网店网小编就向大家推荐一家在淘宝上人气很高的

台湾美女排行榜,林志玲才排第八?

近日关于台湾十大美女排行榜可是热搜啊!由郭雪芙领头,其余各大巨头更追齐下 。大家喜欢的志林姐居然没进前5。下面是台湾十大美女排

台湾专家说大陆吃不起茶叶蛋事件,台湾对大陆的误解无敌

这不禁让我想到小时候孩童之间的打闹,“你吃不起”、“你家才没呢”……诸如此类。

台湾电话怎么拨打电话,大陆怎么打电话去台湾!

台湾自由行小秘书来告诉你:大陆手机号先需开通港澳台漫游,如101星巴克电话(02)8101-0701,请打00-886-2-8101-0701,台湾卡拨02-8101-07

日本和台湾米糠油事件,兼谈米糠油事件~!

提到食物安全事件,很多人往往忽视我们东边的邻居日本,会以为日本食品安全做得好,不存在食品安全问题。

分享到:

栏目导航

推荐阅读

热门阅读