iOS 開發(fā) 企業(yè)組織機(jī)構(gòu)代碼簡單校驗(yàn)

這是以前寫的代碼。當(dāng)時(shí)是看著后臺(tái)校驗(yàn)改編的,是可用的!

/**組織機(jī)構(gòu)代碼校驗(yàn)*/
-(BOOL)isValidEntpCode {
    NSString *str = @"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    if (self.length==18) {
        Byte ws[] = {1,3,9,27,19,26,16,17,20,29,25,13,8,24,10,30,28};
        NSString *reg = @"^([0-9A-HJ-NPQRTUWXY]{2})([0-9]{6})([0-9A-HJ-NPQRTUWXY]{9})([0-9A-Z]{1})$";
        NSPredicate *regextestcm = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", reg];
        if (![regextestcm evaluateWithObject:self]) {
            return NO;
        }
        NSArray *codes = [NSArray arrayWithObjects:[[self substringWithRange:NSMakeRange(0, self.length-1)] LY_defaultValue:@""],[[self substringWithRange:NSMakeRange(self.length-1, 1)] LY_defaultValue:@""], nil];
        LYLog(@"%@",codes[0])
        int sum = 0;
        NSString *codeArr = codes[0];
        for (int i = 0; i < 17; i++) {
            NSString *strS = [codeArr substringWithRange:NSMakeRange(i, 1)];
            NSRange range = [str rangeOfString:strS];
            if (range.location!=NSNotFound) {
                NSInteger strInt = range.location;
                sum = sum + (int)strInt*ws[i];
            } else {
                return NO;
            }
        }
        int c18 = 31 - (sum % 31);
        NSRange rang = [str rangeOfString:codes[1]];
        int c18t = (int)(rang.location);
        if (c18==c18t) {
            return YES;
        } else {
            return NO;
        }
    } else if (self.length==10) {
        Byte ws[] = {3, 7, 9, 10, 5, 8, 4, 2 };
        NSString *reg = @"^([0-9A-Z]){8}-[0-9|X]$";
        NSPredicate *regextestcm = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", reg];
        if (![regextestcm evaluateWithObject:self]) {
            return NO;
        }
        int sum = 0;
        for (int i = 0; i < 8; i++) {
            NSString *strS = [self substringWithRange:NSMakeRange(i, 1)];
            NSRange range = [str rangeOfString:strS];
            if (range.location!=NSNotFound) {
                NSInteger strInt = range.location;
                sum = sum + (int)strInt*ws[i];
            } else {
                return NO;
            }
        }
        int c9 = 11 - (sum % 11);
        NSString *strT = [self substringWithRange:NSMakeRange(9, 1)];
        NSRange rang = [str rangeOfString:strT];
        int c9t = (int)(rang.location);
        if (c9==c9t) {
            return YES;
        } else {
            return NO;
        }
    }
    return NO;
}

上面用到了LY_defaultValue,就是判斷是否為空,下面是內(nèi)部實(shí)現(xiàn)

- (id)LY_defaultValue:(id)defaultData {
    if (![defaultData isKindOfClass:[self class]]) {
        return defaultData;
    }
    if ([self LY_isEmptyObject]) {
        return defaultData;
    }
    return self;
}

- (BOOL)LY_isEmptyObject {
    if ([self isEqual:[NSNull null]]) {
        return YES;
    }
    if ([self isKindOfClass:[NSString class]]) {
        if ([(NSString *)self length] == 0) {
            return YES;
        }
    }
    if ([self isKindOfClass:[NSArray class]]) {
        if ([(NSArray *)self count] == 0) {
            return YES;
        }
    }
    if ([self isKindOfClass:[NSDictionary class]]) {
        if ([(NSDictionary *)self count] == 0) {
            return YES;
        }
    }
    return NO;
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容