身份证号键盘输入限制开发总结

来源:互联网 发布:sd卡数据恢复软件安卓 编辑:程序博客网 时间:2024/05/17 02:03

身份证号键盘输入限制开发总结:

 

需要注意的问题:

1输入框限制的输入字符

2,输入框限制的输入个数限制

3,不同样式的原生键盘,比如九宫格键盘,英文状态下,长按键盘方式输入字母x会出现一次连出两个x的字符(即使已超过了限制的位数), 并且由于对字符限制了位数不能再变化输入的内容,所以也不能删除单个字符


解决方式:

1,输入框限制的输入字符(知识点:字符串_过滤处理NSCharacterSetinvertedSet


//限制输入内容

    NSCharacterSet* cs;

    cs = [[NSCharacterSet  characterSetWithCharactersInString:limitStr]  invertedSet];

    NSString* filtered = [[string  componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];

    BOOL canChange = [string   isEqualToString:filtered];

    return canChange;


备注:

1limitStr:是一个包含所有符合要求字符的字符串;

2 invertedSet方法是去反字符,把所有的除了limitStr里的字符都找出来(包含去空格功能);

3componentsSeparatedByCharactersInSet 字符串的拆分 ,在字符串中遇到字符集合类NSCharacterSet 字符就拆分 ,返回的是一个数组类型,用法:


有字符串“A~B^C",我拆分为 "A", "B" "C"?

NSString *str = @"A~B^C";

NSArray *arr = [str componentsSeparatedByCharactersInSet: [NSCharacterSet characterSetWithCharactersInString:@"^~"]];

NSLog(@"%@", arr);

4 componentsJoinedByString:数组中所有元素拼接成字符串,ByString后面的参数是拼接各个元素的分隔符。

如:[array compontsJoinedByString:@","];,即,把数组array 中的所有元素通过分隔符拼接成字符串。

5characterSetWithCharactersInString:通过 字符串参数 获取 NSCharacterSet字符集合


过滤掉非法字符的核心思路:

通过合法字符串构建的NSCharacterSet 去反(invertedSet获取的非法字符集合对象NSCharacterSet类,先将要判断的字符串通过非法字符集合作为分隔符分割字符串 成一个个元素返回一个数组(作为分隔符的非法字符在遇到的时候不仅要分割字符串,并且去掉,那么数组中装的都是合法字符), 再将该数组进行拼接字符串 ,这样就可以过滤掉非法字符。 

原创粉丝点击