zoukankan      html  css  js  c++  java
  • iOS 身份证最后一位是X,输入17位后自动补全X(转)


    非原创,转载自http://blog.csdn.net/l2i2j2/article/details/51542028
    如果身份证最后一位是X,输入17位后自动补全X

    //
    textField代理方法 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { // string.length为0,表明没有输入字符,应该是正在删除,应该返回YES。 if (string.length == 0) { return YES; } // length为当前输入框中的字符长度 NSUInteger length = textField.text.length + string.length; // 如果该页面中还有其他的输入框,则需要做这个判断 if (textField == self.idNumberTextField) { // str为当前输入框中的字符 NSString *str = [NSString stringWithFormat:@"%@%@", textField.text, string]; // 当输入到17位数的时候,通过theLastIsX方法判断最后一位是不是X if (length == 17 && [self theLastIsX:str]) { // 如果是17位,并通过前17位计算出18位为X,自动补全,并返回NO,禁止编辑。 textField.text = [NSString stringWithFormat:@"%@%@X", textField.text, string]; return NO; } // 如果是其他情况则直接返回小于等于18(最多输入18位) return length <= 18; } return YES; } // 判断最后一个是不是X - (BOOL)theLastIsX:(NSString *)IDNumber { NSMutableArray *IDArray = [NSMutableArray array]; for (int i = 0; i < 17; 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]; int sum = 0; for (int i = 0; i < 17; i++) { int coefficient = [coefficientArray[i] intValue]; int ID = [IDArray[i] intValue]; sum += coefficient * ID; } if (sum % 11 == 2) return YES; else return NO; }
  • 相关阅读:
    上网助手(集成ipv6)windows版
    c# 串口编程
    test blog
    用于主题检测的临时日志(d020b283408c4bc68872f97ee237b663 3bfe001a32de4114a6b44005b770f6d7)
    OpenGL概述 陌陌
    [转载][转帖]谈谈我对攻读计算机研究生的看法。。。大牛的文章,见解精深独到
    滚动值的兼容问题
    js小练习去掉指定的字符组成一句话输出
    马虎将classname加到了id属性中,造成报错
    锋利的jquery读书笔记(一)
  • 原文地址:https://www.cnblogs.com/funny11/p/5946673.html
Copyright © 2011-2022 走看看