千分位&手机号验证&身份证号验证
Posted iOS的美丽岁月
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了千分位&手机号验证&身份证号验证相关的知识,希望对你有一定的参考价值。
前言:
App开发者注意了,你还在为了验证一个手机号发愁吗?你还在为验证一个身份证号发愁吗?你还在为给一个数字添加千分位发愁吗?那你就OUT了。福利满满的来了,你只要下载【DigitManager】文件,你就可以拥有对数字处理的功能。有效提高你的开发效率。
1、在App开发的过程中,数据中数字的出现往往都占据重要的角色。例如:一些理财App 数值的千分位的添加至关重要;一些机关、银行的App 在身份验证等。还有一个普遍的模块,那就是获取用户的手机号。
2、呼朋唤友
群的特点:
1、ios 开发交流群,每周都有更新新的内容。
2、群里有3~5年的资深开发者。
3、群员在App开发过程中遇到什么问题,可以在群里提问。
4、群员在App开发中,如果遇到难实现的功能或者模块,可以在群里提出,有人员帮助你实现。
5、加入群后,可以get到App 开发中的一些小功能模块。
群号是:185341804 群名字:成功QQ吧
群主号:1542100658 (qq)
3、代码区域
1》千分位
/**
添加千分位
@param numberString 要添加的数字串
@return 添加后的数字串
*/
+(NSString*)addDigThousands:(NSString*)numberString;
#pragma mark ---- addDigThousands
+(NSString*)addDigThousands:(NSString*)numberString
if (numberString==nil||numberString.length==0) return @"0.00" ;
/**
判断系统的大小
*/
unsigned short systemVerson = [UIDevice currentDevice].systemVersion.intValue;
/**
判断是否含有小数点
*/
BOOL isDecimalPoint = NO;
if (systemVerson>=8)
isDecimalPoint = [numberString containsString:@"."];
else
isDecimalPoint = [numberString componentsSeparatedByString:@"."].count>=2?YES:NO;
NSArray * array = [NSArray array];
if (isDecimalPoint)
array = [numberString componentsSeparatedByString:@"."];
numberString =array.firstObject;
/**
转化成可变的字符串
*/
NSMutableString * string = [NSMutableString stringWithString:numberString];
/**
获取整数部位的长度
*/
NSInteger length = string.length;
/**
获取最终的长度
*/
NSInteger KMlength = 0;
if (length%3==0)
KMlength = length;
else
/**
计算要补充的数值
*/
KMlength = length +(3- length%3);
for (unsigned i =0; i<(3-length%3); i++)
[string insertString:@"0" atIndex:0];
/**
插入千分位
*/
NSMutableString * returnString = [NSMutableString stringWithCapacity:0];
for (unsigned i = 1; i<=KMlength; i++)
if (i%3==0)
NSString * appendString = nil;
appendString = [string substringWithRange:NSMakeRange(i-3, 3)];
if (i==KMlength)
[returnString appendString:[NSString stringWithFormat:@"%@",appendString]];
else
[returnString appendString:[NSString stringWithFormat:@"%@,",appendString]];
/**
获取数值的有效位
*/
if (length%3!=0)
returnString = (NSMutableString*)[returnString substringFromIndex:(3-length%3)];
/**
拼接小数部位
*/
if (isDecimalPoint)
returnString = (NSMutableString*)[returnString stringByAppendingString:[NSString stringWithFormat:@".%@",array[1]]];
return returnString;
2》检测是否全是数字
/**
检测是否全部是数字
@param numberString 要检测的数字串
@return YES|NO
*/
+(BOOL)inspectDigit:(NSString*)numberString;
#pragma mark ---- inspectDigit
+(BOOL)inspectDigit:(NSString*)numberString
/**
判断是否存在
*/
if (numberString.length==0||numberString==nil) return NO;
/**
创建字符串扫描对象
*/
NSScanner* scan = [NSScanner scannerWithString:numberString];
int val;
return[scan scanInt:&val] && [scan isAtEnd];
3》手机号的验证
/**
检查手机号
@param numberString 要检查的手机号串
@return YES|NO
*/
+(BOOL)inspectCellphoneNumber:(NSString*)numberString;
#pragma mark ---- inspectCellphoneNumber
+(BOOL)inspectCellphoneNumber:(NSString*)numberString
/**
判断传入的参数是否存在
*/
if (numberString.length==0||numberString==nil) return NO;
/**
清楚冗余的部分
*/
numberString = [numberString stringByReplacingOccurrencesOfString:@"-" withString:@""];
if (numberString.length==11)
/**
创建标志
*/
BOOL CMCC,CUCC,CTCC;
/**
* 移动号段正则表达式
*/
NSString *CM_NUM = @"^((13[4-9])|(147)|(15[0-2,7-9])|(178)|(18[2-4,7-8]))\\\\d8|(1705)\\\\d7$";
/**
* 联通号段正则表达式
*/
NSString *CU_NUM = @"^((13[0-2])|(145)|(15[5-6])|(176)|(18[5,6]))\\\\d8|(1709)\\\\d7$";
/**
* 电信号段正则表达式
*/
NSString *CT_NUM = @"^((133)|(153)|(177)|(18[0,1,9]))\\\\d8$";
NSPredicate *predCMCC = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CM_NUM];
CMCC = [predCMCC evaluateWithObject:numberString];
NSPredicate *predCUCC = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CU_NUM];
CUCC = [predCUCC evaluateWithObject:numberString];
NSPredicate *predCTCC = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CT_NUM];
CTCC = [predCTCC evaluateWithObject:numberString];
if (CMCC || CUCC || CTCC)
return YES;
return NO;
4》身份证号
/**
检测身份证
@param numberString 要检测的身份证号
@return YES|NO
*/
+(BOOL)inspectID:(NSString*)numberString;
#pragma mark ---- inspectID
+(BOOL)inspectID:(NSString*)numberString
/**
判断是否存在
*/
if (numberString==nil||numberString.length==0) return NO;
/**
去除空格
*/
numberString = [numberString stringByReplacingOccurrencesOfString:@" " withString:@""];
/**
校验身份证的位数
*/
if (numberString.length==18)
/**
求和身份证前17位的和
*/
NSString * Front17String = [numberString substringToIndex:numberString.length-1];
/**
加权因子
*/
NSArray * factorArray = @[@7,@9,@10,@5,@8,@4,@2,@1,@6,@3,@7,@9,@10,@5,@8,@4,@2];
/**
求和
*/
int sum = 0;
for (unsigned i =0; i<Front17String.length; i++)
const char value = [Front17String characterAtIndex:i];
sum = sum + atoi(&value) * [factorArray[i] intValue];
ushort remainderValue = sum % 11;
/**
余数参考表
*/
NSArray * remainderArray = @[@"1",@"0",@"X",@"9",@"8",@"7",@"6",@"5",@"4",@"3",@"2"];
/**
获取身份证最后一位
*/
NSString * lastIDString = [numberString substringFromIndex:17];
/**
获取余数查询到的最后一位
*/
NSString * remadinderQueryString = [remainderArray objectAtIndex:remainderValue];
if ([lastIDString isEqualToString:remadinderQueryString])
return YES;
return NO;
4、代码下载
https://pan.baidu.com/s/1cxRUOI
以上是关于千分位&手机号验证&身份证号验证的主要内容,如果未能解决你的问题,请参考以下文章