美文网首页
iOS开发自动补全第18位身份证号码的X

iOS开发自动补全第18位身份证号码的X

作者: Colin_狂奔的蚂蚁 | 来源:发表于2017-04-25 10:56 被阅读67次

// textField代理方法

- (BOOL)textField:(UITextField*)textFieldshouldChangeCharactersInRange:(NSRange)rangereplacementString:(NSString*)string {

// string.length为0,表明没有输入字符,应该是正在删除,应该返回YES。

if(string.length==0) {

returnYES;

}

// length为当前输入框中的字符长度

NSUInteger length = textField.text.length+ string.length;

// 如果该页面中还有其他的输入框,则需要做这个判断

if(textField ==self.idNumberTextField) {

// str为当前输入框中的字符

NSString*str = [NSStringstringWithFormat:@"%@%@", textField.text,string];

// 当输入到17位数的时候,通过theLastIsX方法判断最后一位是不是X

if(length ==17&& [selftheLastIsX:str]) {

// 如果是17位,并通过前17位计算出18位为X,自动补全,并返回NO,禁止编辑。

textField.text= [NSStringstringWithFormat:@"%@%@X", textField.text,string];

returnNO;

}

// 如果是其他情况则直接返回小于等于18(最多输入18位)

returnlength <=18;

}

returnYES;

}

// 判断最后一个是不是X

- (BOOL)theLastIsX:(NSString*)IDNumber {

NSMutableArray*IDArray = [NSMutableArrayarray];

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

NSRange range = NSMakeRange(i,1);

NSString*subString = [IDNumbersubstringWithRange:range];

[IDArrayaddObject:subString];

}

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

intsum =0;

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

intcoefficient = [coefficientArray[i]intValue];

intID = [IDArray[i]intValue];

sum +=coefficient* ID;

}

if(sum %11==2)returnYES;

elsereturnNO;

}

相关文章

网友评论

      本文标题: iOS开发自动补全第18位身份证号码的X

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