新建一个NSObject类,起一个工具类的名字,我的是QCTools
然后把下边代码分 .h .m 文件粘进去,结束
本表单工具主要包括
- 字符串为空判断
- 判断是否为手机号
- 判断时候为身份证号
- 判断是否为邮箱
- 判断是否为银行卡号
- 按指定分隔符拆分字符串
- 按指定分隔符拼接字符串
.h文件中定义类方法:
/*
判断字符串是否为空
*/
+(BOOL) isBlankString:(NSString *)string;
/*
判断是否为手机号
*/
+(BOOL)isMobileNumber:(NSString*)mobileNum;
/*
判断是否是身份证号
*/
+(BOOL)isIdCard:(NSString *)idCard;
/*
判断是否为邮箱
*/
+(BOOL)isEmail:(NSString*)email;
/*
判断是否为银行卡号
*/
+(BOOL)isBankCard:(NSString *)cardNo;
/*
数组=>字符串 按指定分隔符拼接字符串
*/
+(NSString*)jointStringBaseArr:(NSMutableArray*)arr BySeparator:(NSString *)sepa;
/*
字符串=>数组 按指定分隔符拆分字符串
*/
+(NSArray*)splitString:(NSString *)string BySeparator:(NSString *)sepa;
.m文件中方法实现
/*
字符串为空判断
*/
+(BOOL) isBlankString:(NSString *)string {
if (string == nil || string == NULL) {
return YES;
}
if ([string isKindOfClass:[NSNull class]]) {
return YES;
}
if ([[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] length]==0) {
return YES;
}
return NO;
}
/*
手机号判断
*/
+(BOOL)isMobileNumber:(NSString*)mobileNum {
// 电信号段:133/153/180/181/189/177
// 联通号段:130/131/132/155/156/185/186/145/176
// 移动号段:134/135/136/137/138/139/150/151/152/157/158/159/182/183/184/187/188/147/178
// 虚拟运营商:170
NSString *MOBILE = @"^1(3[0-9]|4[57]|5[0-35-9]|8[0-9]|7[06-8])\\d{8}$";
NSPredicate *regextestmobile = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", MOBILE];
return[regextestmobile evaluateWithObject:mobileNum];
}
/*
身份证判断
*/
+(BOOL)isIdCard:(NSString *)identityCard{
//判断是否为空
if (identityCard==nil||identityCard.length <= 0) {
return NO;
}
//判断是否是18位,末尾是否是x
NSString *regex2 = @"^(\\d{14}|\\d{17})(\\d|[xX])$";
NSPredicate *identityCardPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex2];
if(![identityCardPredicate evaluateWithObject:identityCard]){
return NO;
}
//判断生日是否合法
NSRange range = NSMakeRange(6,8);
NSString *datestr = [identityCard substringWithRange:range];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat : @"yyyyMMdd"];
if([formatter dateFromString:datestr]==nil){
return NO;
}
//判断校验位
if(identityCard.length==18)
{
NSArray *idCardWi= @[ @"7", @"9", @"10", @"5", @"8", @"4", @"2", @"1", @"6", @"3", @"7", @"9", @"10", @"5", @"8", @"4", @"2" ]; //将前17位加权因子保存在数组里
NSArray * idCardY=@[ @"1", @"0", @"10", @"9", @"8", @"7", @"6", @"5", @"4", @"3", @"2" ]; //这是除以11后,可能产生的11位余数、验证码,也保存成数组
int idCardWiSum=0; //用来保存前17位各自乖以加权因子后的总和
for(int i=0;i<17;i++){
idCardWiSum+=[[identityCard substringWithRange:NSMakeRange(i,1)] intValue]*[idCardWi[i] intValue];
}
int idCardMod=idCardWiSum%11;//计算出校验码所在数组的位置
NSString *idCardLast=[identityCard substringWithRange:NSMakeRange(17,1)];//得到最后一位身份证号码
//如果等于2,则说明校验码是10,身份证号码最后一位应该是X
if(idCardMod==2){
if([idCardLast isEqualToString:@"X"]||[idCardLast isEqualToString:@"x"]){
return YES;
}else{
return NO;
}
}else{
//用计算出的验证码与最后一位身份证号码匹配,如果一致,说明通过,否则是无效的身份证号码
if([idCardLast intValue]==[idCardY[idCardMod] intValue]){
return YES;
}else{
return NO;
}
}
}
return NO;
}
/*
邮箱验证
*/
+(BOOL)isEmail:(NSString *)email{
NSString *regex = @"^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$";
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
return [emailTest evaluateWithObject:email];
}
/*
银行卡号验证
*/
+(BOOL)isBankCard:(NSString *)cardNo{
int oddsum = 0; //奇数求和
int evensum = 0; //偶数求和
int allsum = 0;
int cardNoLength = (int)[cardNo length];
int lastNum = [[cardNo substringFromIndex:cardNoLength-1] intValue];
cardNo = [cardNo substringToIndex:cardNoLength - 1];
for (int i = cardNoLength -1 ; i>=1;i--) {
NSString *tmpString = [cardNo substringWithRange:NSMakeRange(i-1, 1)];
int tmpVal = [tmpString intValue];
if (cardNoLength % 2 ==1 ) {
if((i % 2) == 0){
tmpVal *= 2;
if(tmpVal>=10)
tmpVal -= 9;
evensum += tmpVal;
}else{
oddsum += tmpVal;
}
}else{
if((i % 2) == 1){
tmpVal *= 2;
if(tmpVal>=10)
tmpVal -= 9;
evensum += tmpVal;
}else{
oddsum += tmpVal;
}
}
}
allsum = oddsum + evensum;
allsum += lastNum;
if((allsum % 10) == 0)
return YES;
else
return NO;
}
/*
按指定分隔符拼接字符串
*/
+(NSString *)jointStringBaseArr:(NSMutableArray *)arr BySeparator:(NSString *)sepa{
int i = 0;
NSString *selectStr = [NSString new];
for (NSString *str in arr) {
if (str.length == 0 || [str isEqual:@""]) {
continue;
}
if (i == 0) {
selectStr = [NSString stringWithFormat:@"%@",str];
}
if (i > 0) {
selectStr = [NSString stringWithFormat:@"%@%@%@",selectStr,sepa,str];
}
i++;
}
return selectStr;
}
/*
按指定分隔符拆分字符串
*/
+(NSArray *)splitString:(NSString *)string BySeparator:(NSString *)sepa{
NSString *str = string;
NSArray *arr= [str componentsSeparatedByString:sepa];
return arr;
}
打完收工,一切为了效率