美文网首页
iOS 开发 企业组织机构代码简单校验

iOS 开发 企业组织机构代码简单校验

作者: BelieveLife | 来源:发表于2018-10-27 18:12 被阅读0次

这是以前写的代码。当时是看着后台校验改编的,是可用的!

/**组织机构代码校验*/
-(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,就是判断是否为空,下面是内部实现

- (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;
}

相关文章

网友评论

      本文标题:iOS 开发 企业组织机构代码简单校验

      本文链接:https://www.haomeiwen.com/subject/mfpvgftx.html