IOS各类判断笔记

IOS笔记

手机号验证包括香港手机号判断
+ (BOOL)matchesWithPhoneNumber:(NSString *)phoneNumber
{
    return [self matchesWithFormatString:@"^((13[0-9])|(15[^4])|(18[0,2,3,5-9])|(17[0-8])|(147))\\d{8}$|^(5|6|8|9)\\d{7}$" tagaetStr:phoneNumber];
}
/**
 *  指定格式的匹配
 */
+ (BOOL)matchesWithFormatString:(NSString *)formatStr tagaetStr:(NSString *)targetStr
{
    NSString *emailRegex = formatStr;
    NSPredicate *match = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",emailRegex];
    return [match evaluateWithObject:targetStr];
}
判断密码格式
+(BOOL)validateWithPassword:(NSString *)password
{
    //密码只包含字母,数字,字符中至少两种
    NSString * regex = @"^(?![0-9]+$)(?![a-zA-Z]+$)[a-zA-Z0-9]{6,18}$";
    NSPredicate * pas= [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex];
    return [pas evaluateWithObject:password];
}

判断姓名格式

  • 用户名
+(BOOL)validateUserName:(NSString *)name
{
    NSString *userNameRegex = @"^[A-Za-z0-9]{3,20}+$";
    NSPredicate *userNamePredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",userNameRegex];
    BOOL B = [userNamePredicate evaluateWithObject:name];
    return B;
}
  • 昵称
+(BOOL)validateNickname:(NSString *)nickname
{
    NSString *nicknameRegex = @"^[\u4e00-\u9fa5]{2,10}$";
    NSPredicate *passWordPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",nicknameRegex];
    return [passWordPredicate evaluateWithObject:nickname];
}

邮箱

+(BOOL)ValidateEmail:(NSString *)email {
    NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
    NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
    return [emailTest evaluateWithObject:email];
}

过滤所有Emoji标签符号

+(BOOL)stringContainEmoji:(NSString *)emoji{
    __block BOOL returnValue = NO;
    [emoji enumerateSubstringsInRange:NSMakeRange(0, [emoji length]) options:NSStringEnumerationByComposedCharacterSequences usingBlock:
     ^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {
         const unichar hs = [substring characterAtIndex:0];
         // surrogate pair
         if (0xd800 <= hs && hs <= 0xdbff) {
             if (substring.length > 1) {
                 const unichar ls = [substring characterAtIndex:1];
                 const int uc = ((hs - 0xd800) * 0x400) + (ls - 0xdc00) + 0x10000;
                 if (0x1d000 <= uc && uc <= 0x1f77f) {
                     returnValue = YES;
                 }
             }
         } else if (substring.length > 1) {
             const unichar ls = [substring characterAtIndex:1];
             if (ls == 0x20e3) {
                 returnValue = YES;
             }
         } else {
             // non surrogate
             if (0x2100 <= hs && hs <= 0x27ff) {
                 returnValue = YES;
             } else if (0x2B05 <= hs && hs <= 0x2b07) {
                 returnValue = YES;
             } else if (0x2934 <= hs && hs <= 0x2935) {
                 returnValue = YES;
             } else if (0x3297 <= hs && hs <= 0x3299) {
                 returnValue = YES;
             } else if (hs == 0xa9 || hs == 0xae || hs == 0x303d || hs == 0x3030 || hs == 0x2b55 || hs == 0x2b1c || hs == 0x2b1b || hs == 0x2b50) {
                 returnValue = YES;
             }
         }
     }];
    return returnValue;
    
}

字符串替换

+(NSString *)StringChooseString:(NSString *)chooseStr{
    NSCharacterSet *set = [NSCharacterSet characterSetWithCharactersInString:@"@/:;()¥「」"、[]{}#%-*+=_\\|~<>$€^•'@#$%^&*()_+'\""];
    NSString *trimmedString = [chooseStr stringByTrimmingCharactersInSet:set];
    NSLog(@"DELECT----%@",trimmedString);
    NSString *str = [trimmedString stringByReplacingOccurrencesOfString:@"\"," withString:@"、"];//替换字符
    NSString * twoStr = [str stringByReplacingOccurrencesOfString:@"\"" withString:@""];
    NSLog(@"DELECTONE----%@",twoStr);
    return twoStr;
}

判断字符串 首字符是否为字母

+(BOOL)JudgeString:(NSString *)string{
    NSString *regex = @"[A-Za-z]+";
    NSPredicate*predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex];
    return [predicate evaluateWithObject:string];
}

时间戳转换成时间

+ (NSString *)dateWithString:(NSString *)str Format:(NSString *)format
{
    NSTimeInterval time = [str doubleValue];
    /** [[NSDate date] timeIntervalSince1970]*1000;*/
    NSDate *detaildate = [NSDate dateWithTimeIntervalSince1970:time];
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];//实例化一个NSDateFormatter对象
    [dateFormatter setDateFormat:format];//设定时间格式,这里可以设置成自己需要的格式
    NSString *currentDateStr = [dateFormatter stringFromDate:detaildate];
    return currentDateStr;
}

时间戳转换时间-毫秒

+ (NSString *)dateMSWithString:(NSString *)str Format:(NSString *)format
{
    NSTimeInterval time = [str doubleValue]/1000;
    /** [[NSDate date] timeIntervalSince1970]*1000;*/
    NSDate *detaildate = [NSDate dateWithTimeIntervalSince1970:time];
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];//实例化一个NSDateFormatter对象
    [dateFormatter setDateFormat:format];//设定时间格式,这里可以设置成自己需要的格式
    NSString *currentDateStr = [dateFormatter stringFromDate:detaildate];
    return currentDateStr;
}

转换成时间

+(NSString *)dateWithDate:(NSDate *)date Format:(NSString *)format
{
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];//实例化一个NSDateFormatter对象
    [dateFormatter setDateFormat:format];//设定时间格式,这里可以设置成自己需要的格式
    NSString *currentDateStr = [dateFormatter stringFromDate:date];
    return currentDateStr;
}

NSString 转NSDate

+ (NSDate *)dateWithdate:(NSString *)str Format:(NSString *)format
{
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];//实例化一个NSDateFormatter对象
    [dateFormatter setDateFormat:format];//设定时间格式,这里可以设置成自己需要的格式
    NSDate * mainDate = [dateFormatter dateFromString:str];
    return mainDate;
}

当前时间戳转换成时间

+ (NSString *)currentDateWithFormat:(NSString *)format
{
    NSDate *detaildate = [NSDate date];
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];//实例化一个NSDateFormatter对象
    [dateFormatter setDateFormat:format];//设定时间格式,这里可以设置成自己需要的格式
    NSString *currentDateStr = [dateFormatter stringFromDate:detaildate];
    return currentDateStr;
}

系统通知是否打开

//检测通知是否打开iOS8以后有所变化 所以需要适配iOS7
+(BOOL)openThePushNotification{
    if (IOS8) {//IOS8写的宏
        if ([[UIApplication sharedApplication] currentUserNotificationSettings].types  == UIUserNotificationTypeNone) {
            //         未打开通知//这个是个自定义的alertView 当用户没有打开推送时  会弹出 可以替换成自己项目里面的弹框
            if (IOS8) {//iOS8以后跳转到设置界面的代码也出现了变化 下面这段代码是直接跳转到APP的设置界面
                //跳入当前App设置界面
                [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
            }else{
                //适配iOS7 ,跳入系统设置界面
                [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:General&path=Reset"]];
            }
            return NO;
        }else{
            return YES;
        }
    }else{ // ios7
        if ([[UIApplication sharedApplication] enabledRemoteNotificationTypes]  == UIUserNotificationTypeNone) {
            if (IOS8) {
                //跳入当前App设置界面
                [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
            }else{
                //适配iOS7 ,跳入系统设置界面
                [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:General&path=Reset"]];
            }
            return NO;
        }else{
            
            return YES;
        }
    }
}

获取手机型号

+ (NSString *)deviceVersion
{
    struct utsname systemInfo;
    
    uname(&systemInfo);
    NSString *platform = [NSString stringWithCString:systemInfo.machine encoding:NSASCIIStringEncoding];
    if ([platform isEqualToString:@"iPhone5,1"]) return @"iPhone 5";
    if ([platform isEqualToString:@"iPhone5,2"]) return @"iPhone 5";
    if ([platform isEqualToString:@"iPhone5,3"]) return @"iPhone 5c";
    if ([platform isEqualToString:@"iPhone5,4"]) return @"iPhone 5c";
    if ([platform isEqualToString:@"iPhone6,1"]) return @"iPhone 5s";
    if ([platform isEqualToString:@"iPhone6,2"]) return @"iPhone 5s";
    if ([platform isEqualToString:@"iPhone7,1"]) return @"iPhone 6 Plus";
    if ([platform isEqualToString:@"iPhone7,2"]) return @"iPhone 6";
    if ([platform isEqualToString:@"iPhone8,1"]) return @"iPhone 6s";
    if ([platform isEqualToString:@"iPhone8,2"]) return @"iPhone 6s Plus";
    if ([platform isEqualToString:@"iPhone8,4"]) return @"iPhone SE";
    if ([platform isEqualToString:@"iPhone9,1"]) return @"iPhone 7";
    if ([platform isEqualToString:@"iPhone9,3"]) return @"iPhone 7";
    if ([platform isEqualToString:@"iPhone9,2"]) return @"iPhone 7 Plus";
    if ([platform isEqualToString:@"iPhone9,4"]) return @"iPhone 7 Plus";
    if ([platform isEqualToString:@"iPhone10,1"]) return @"iPhone 8";
    if ([platform isEqualToString:@"iPhone10,4"]) return @"iPhone 8";
    if ([platform isEqualToString:@"iPhone10,2"]) return @"iPhone 8 Plus";
    if ([platform isEqualToString:@"iPhone10,5"]) return @"iPhone 8 Plus";
    if ([platform isEqualToString:@"iPhone10,3"]) return @"iPhone X";
    if ([platform isEqualToString:@"iPhone10,6"]) return @"iPhone X";
    if ([platform isEqualToString:@"iPhone11,8"]) return @"iPhone XR";
    if ([platform isEqualToString:@"iPhone11,2"]) return @"iPhone XS";
    if ([platform isEqualToString:@"iPhone11,6"]) return @"iPhone XS Max";
    if ([platform isEqualToString:@"iPhone11,4"]) return @"iPhone XS Max";
    if ([platform isEqualToString:@"i386"])      return @"iPhone Simulator";
    if ([platform isEqualToString:@"x86_64"])    return @"iPhone Simulator";
    return platform;
}

字典转JSON

+ (NSString *)dictionaryToJson:(NSDictionary *)dict
{
    BOOL isValidJSONObject = [NSJSONSerialization isValidJSONObject:dict];
    if (isValidJSONObject)
    {
        NSData *jsonData =  [NSJSONSerialization dataWithJSONObject:dict options:NSJSONWritingPrettyPrinted error:nil];
        return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
    }
    return nil;
}

JSON转字典

+ (NSDictionary *)jsonToDictionary:(NSString *)jsonString
{
    if (jsonString == nil)
    {
        return nil;
    }
    NSLog(@"%@",jsonString);
    NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
    NSError *err;
    NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonData
                                                        options:NSJSONReadingMutableContainers
                                                          error:&err];
    if(err) {
        NSLog(@"json解析失败:%@",err);
        return nil;
    }
    return dic;
}

判断是否输入了emoji 表情

+ (BOOL)stringContainsEmoji:(NSString *)string
{
    __block BOOL isEomji = NO;
    [string enumerateSubstringsInRange:NSMakeRange(0, [string length]) options:NSStringEnumerationByComposedCharacterSequences usingBlock:
     ^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {
         const unichar hs = [substring characterAtIndex:0];
         if (0xd800 <= hs && hs <= 0xdbff) {
             if (substring.length > 1) {
                 const unichar ls = [substring characterAtIndex:1];
                 const int uc = ((hs - 0xd800) * 0x400) + (ls - 0xdc00) + 0x10000;
                 if (0x1d000 <= uc && uc <= 0x1f77f)
                 {
                     isEomji = YES;
                 }
             }
         } else if (substring.length > 1) {
             const unichar ls = [substring characterAtIndex:1];
             if (ls == 0x20e3|| ls ==0xfe0f) {
                 isEomji = YES;
             }
         } else {
             if (0x2B05 <= hs && hs <= 0x2b07) {
                 isEomji = YES;
             } else if (0x2934 <= hs && hs <= 0x2935) {
                 isEomji = YES;
             } else if (0x3297 <= hs && hs <= 0x3299) {
                 isEomji = YES;
             } else if (hs == 0xa9 || hs == 0xae || hs == 0x303d || hs == 0x3030 || hs == 0x2b55 || hs == 0x2b1c || hs == 0x2b1b || hs == 0x2b50|| hs == 0x231a ) {
                 isEomji = YES;
             }
         }
     }];
    return isEomji;
}

通过文字来计算文字所占的区域大小

+ (CGSize)sizeForText:(NSString *)text withFont:(UIFont *)font withSize:(CGSize)size
{
    NSDictionary *attributes = @{NSFontAttributeName:font};
    
    //通过文字来获取文字所占的大小
    CGRect rect = [text boundingRectWithSize:size options:NSStringDrawingUsesLineFragmentOrigin attributes:attributes context:nil];
    return rect.size;
}

字典按升序排序

+ (NSString *)stringWithAscendingOrderDict:(NSDictionary*)dict
{
    NSArray*keys = [dict allKeys];
    NSArray*sortedArray = [keys sortedArrayUsingComparator:^NSComparisonResult(id obj1,id obj2)
                           {
                               return[obj1 compare:obj2 options:NSNumericSearch];//正序
                           }];
    NSString*str =@"";
    for(NSString*categoryId in sortedArray)
    {
        id value = [dict objectForKey:categoryId];
        if ([value isKindOfClass:[NSDictionary class]])
        {
            value = [self stringWithAscendingOrderDict:value];
        }
        if ([str length] !=0)
        {
            str = [str stringByAppendingString:@"&"];
        }
        str = [str stringByAppendingFormat:@"%@=%@",categoryId,value];
    }
    return str;
}

压缩图片

+ (UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)size {
    UIGraphicsBeginImageContext(size);
    [image drawInRect:CGRectMake(0, 0, size.width, size.height)];
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return newImage;
}

URLEncoding格式

+ (NSString *)URLEncodedString:(NSString *)strUrl
{
    return [strUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
}

匹配身份证号码

+ (BOOL)matchesWithIDCardNumber:(NSString *)idNumber
{
    return [self matchesWithFormatString:@"^[1-9]\\d{7}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}$|^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}([0-9]|X)$" tagaetStr:idNumber];
}

匹配姓名

+ (BOOL)matchesWithName:(NSString *)nameStr
{
    return [self matchesWithFormatString:@"^[\u4E00-\u9FA5]{2,5}(?:·[\u4E00-\u9FA5]{2,5})*" tagaetStr:nameStr];
}

匹配6-16位的纯汉字

+ (BOOL)matchesWithChinese:(NSString *)nameStr
{
    return [self matchesWithFormatString:@"^[\u4e00-\u9fa5]{6,16}$" tagaetStr:nameStr];
}

指定格式的匹配

+ (BOOL)matchesWithFormatString:(NSString *)formatStr tagaetStr:(NSString *)targetStr
{
    NSString *emailRegex = formatStr;
    NSPredicate *match = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",emailRegex];
    return [match evaluateWithObject:targetStr];
}

Base64加密

+ (NSString *)base64WithString:(NSString *)str
{
    NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];
    return [data base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
}

改变按钮倒计时与状态

+(void)changeVerifyButtonState:(UIButton *)sender
{
    __block int countDown = 120;
    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
    dispatch_source_t timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0,queue);
    dispatch_source_set_timer(timer,dispatch_walltime(NULL, 0),1.0*NSEC_PER_SEC, 0);
    dispatch_source_set_event_handler(timer, ^{
        if(countDown <= 0)
        {
            //倒计时结束,关闭
            dispatch_source_cancel(timer);
            dispatch_async(dispatch_get_main_queue(), ^{
                //设置界面的按钮显示
                sender.enabled = YES;
                [sender setTitle:@"获取验证码" forState:UIControlStateNormal];
            });
        }
        else
        {
            NSString *TimeString = [NSString stringWithFormat:@"%.2d", countDown];
            dispatch_async(dispatch_get_main_queue(), ^{
                [sender setTitle:[NSString stringWithFormat:@"%@秒再次获取",TimeString] forState:UIControlStateNormal];
                sender.enabled = NO;
            });
            countDown--;
        }
    });
    dispatch_resume(timer);
}

判断银行卡是否合法

+(BOOL)checkBankCardNumber:(NSString *)cardNumber
{
    int oddSum = 0;     // 奇数和
    int evenSum = 0;    // 偶数和
    int allSum = 0;     // 总和
    
    // 循环加和
    for (NSInteger i = 1; i <= cardNumber.length; i++)
    {
        NSString *theNumber = [cardNumber substringWithRange:NSMakeRange(cardNumber.length-i, 1)];
        int lastNumber = [theNumber intValue];
        if (i%2 == 0)
        {
            // 偶数位
            lastNumber *= 2;
            if (lastNumber > 9)
            {
                lastNumber -=9;
            }
            evenSum += lastNumber;
        }
        else
        {
            // 奇数位
            oddSum += lastNumber;
        }
    }
    allSum = oddSum + evenSum;
    // 是否合法
    if (allSum%10 == 0)
    {
        return YES;
    }
    else
    {
        return NO;
    }
}

获取当前系统时间的时间戳

  • 获取当前时间的 时间戳
+(NSInteger)getNowTimestamp{
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateStyle:NSDateFormatterMediumStyle];
    [formatter setTimeStyle:NSDateFormatterShortStyle];
    [formatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"]; // ----------设置你想要的格式,hh与HH的区别:分别表示12小时制,24小时制
    //设置时区,这个对于时间的处理有时很重要
    NSTimeZone* timeZone = [NSTimeZone timeZoneWithName:@"Asia/Beijing"];
    [formatter setTimeZone:timeZone];
    NSDate *datenow = [NSDate date];//现在时间
    NSLog(@"设备当前的时间:%@",[formatter stringFromDate:datenow]);
    //时间转时间戳的方法:
    NSInteger timeSp = [[NSNumber numberWithDouble:[datenow timeIntervalSince1970]] integerValue];
    NSLog(@"设备当前的时间戳:%ld",(long)timeSp); //时间戳的值
    return timeSp;
}

每隔4个字符添加一个空格的字符串算法

+ (NSString *)dealWithString:(NSString *)number
{
    NSString *doneTitle = @"";
    int count = 0;
    for (int i = 0; i < number.length; i++) {
        
        count++;
        doneTitle = [doneTitle stringByAppendingString:[number substringWithRange:NSMakeRange(i, 1)]];
        if (count == 4) {
            doneTitle = [NSString stringWithFormat:@"%@ ", doneTitle];
            count = 0;
        }
    }
    NSLog(@"%@", doneTitle);
    return doneTitle;
}

字符串截取

+ (NSString *)InterceptionWithString:(NSString *)str {
    NSString * mainStr = @"";
    NSCharacterSet *doNotWant = [NSCharacterSet characterSetWithCharactersInString:@"[]{}(#%-*+=_)\\|~(<>$%^&*)_+ 0123456789"];
    mainStr = [[str componentsSeparatedByCharactersInSet: doNotWant]componentsJoinedByString: @""];
    return mainStr;
}

图片转灰度

+(UIImage *)changeGrayImage:(UIImage *)oldImage
{
    int bitmapInfo = kCGImageAlphaNone;
    int width = oldImage.size.width;
    int height = oldImage.size.height;
    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceGray();
    CGContextRef context = CGBitmapContextCreate (nil,
                                                  width,
                                                  height,
                                                  8,
                                                  0,
                                                  colorSpace,
                                                  bitmapInfo);
    CGColorSpaceRelease(colorSpace);
    if (context == NULL) {
        return nil;
    }
    CGContextDrawImage(context,
                       CGRectMake(0, 0, width, height), oldImage.CGImage);
    UIImage *grayImage = [UIImage imageWithCGImage:CGBitmapContextCreateImage(context)];
    CGContextRelease(context);
    return grayImage;
}

下载地址

转载于:https://www.cnblogs.com/Dordly/p/8745253.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值