ios - 工具类

这几天看项目,把俺旁边小哥哥的一个工具类相中了,希望对大家有所帮助哦~~~~~~~~~

  1 //
  2 //  PLZ_Tool.h
  3 //  4 //
  5 //  Created by penglaizhi on 2017/7/3.
  6 //  Copyright © 2017年 yst-fll. All rights reserved.
  7 //
  8 
  9 #import <Foundation/Foundation.h>
 10 #import <ifaddrs.h>
 11 #import <arpa/inet.h>
 12 #import <net/if.h>
 13 
 14 #define IOS_CELLULAR    @"pdp_ip0"
 15 #define IOS_WIFI        @"en0"
 16 #define IOS_VPN         @"utun0"
 17 #define IP_ADDR_IPv4    @"ipv4"
 18 #define IP_ADDR_IPv6    @"ipv6"
 19 
 20 typedef void(^SuccessBlock)(id _Nullable data);
 21 typedef void(^FailBlock)(NSError * _Nullable error);
 22 
 23 @interface PLZ_Tool : NSObject
 24 /**
 25  * 使用该函数计算时间戳
 26  * parameters : 不传参
 27  */
 28 
 29 //+ (NSString*)getTimeDate:(NSString*)time_ format:(NSString*)format_;
 30 
 31 /**
 32  * 使用该函数添加提示框下
 33  * parameters : 不传参
 34  */
 35 //+(void)showMessage:(NSString *)message;
 36 //
 37 ///**
 38 // * 使用该函数添加提示框上
 39 // * parameters : 不传参
 40 // */
 41 //+(void)showMessageUp:(NSString *)message;
 42 
 43 /**
 44  * 使用该函数添加提示框上
 45  * parameters : 不传参
 46  */
 47 + (void)sendGETWithUrl:(NSString *_Nullable)url parameters:(NSDictionary *_Nullable)dict success:(SuccessBlock _Nullable )successBlock fail:(FailBlock _Nullable )failBlock;
 48 
 49 
 50 + (void)sendPOSTWithUrl:(NSString *_Nullable)url parameters:(NSDictionary *_Nullable)dict success:(SuccessBlock _Nullable )successBlock fail:(FailBlock _Nullable )failBlock :(BOOL)isNeed;
 51 
 52 /**
 53  * 判断是否有网
 54  * parameters : 不传参
 55  */
 56 
 57 //+ (BOOL)isCheckNetwork;
 58 
 59 
 60 /*
 61  
 62  *
 63  *color:支持@“#123456”、 @“0X123456”、 @“123456”三种格式
 64  
 65  */
 66 + (UIColor *_Nullable)colorWithHexString:(NSString *_Nullable)color;
 67 
 68 /*
 69  
 70  *
 71  *color:支持@“#123456”、 @“0X123456”、 @“123456”三种格式
 72  
 73  */
 74 + (UIColor *_Nullable)colorWithHexString:(NSString *_Nullable)color alpha:(CGFloat)alpha;
 75 
 76 + (NSString *_Nullable)filterEmoji:(NSString *_Nullable)string;
 77 
 78 + (NSMutableAttributedString *_Nullable)String:(NSString *_Nullable)String RangeString:(NSString *_Nullable)RangeString;//富文本
 79 
 80 +(void)p_makeupDataForDidLoad:(NSMutableArray *_Nullable)arr;
 81 
 82 + (NSMutableAttributedString *_Nullable)String2:(NSString *_Nullable)String RangeString:(NSString *_Nullable)RangeString colorString:(NSString *_Nullable)colorString Size:(CGFloat)size;
 83 //邮箱正则
 84 + (BOOL) validateEmail:(NSString *_Nullable)email;
 85 + (BOOL) validateMobile:(NSString *_Nullable)mobileNum;
 86 + (NSInteger)getNowTimestamp;
 87 + (NSMutableAttributedString *_Nullable)String:(NSString *_Nullable)String SetRangeString:(NSString *_Nullable)RangeString setColor:(UIColor *_Nullable)Color SetFont:(UIFont *_Nullable)Font;
 88 //毫秒转成date
 89 + (NSString *_Nullable)ConvertStrToTime:(NSString *_Nullable)timeStr;
 90 
 91 //字符串判空
 92 +(NSInteger)GetContentBackStyleToString:(NSString *_Nullable)string;
 93 
 94 //过滤表情
 95 + (BOOL)stringContainsEmoji:(NSString *_Nullable)string;
 96 -(void)textFiledEditChangedN:(UITextField *_Nullable)field lenth:(CGFloat)lenth;
 97 
 98 -(void)textViewEditChangedN:(UITextView *_Nullable)textView lenth:(CGFloat)lenth;
 99 
100 //获取ip地址
101 + (NSString *_Nullable)getIPAddress:(BOOL)preferIPv4;
102 + (NSString *_Nullable)deviceIPAdress;
103 + (BOOL)isMobileNumber:(NSString *_Nullable)mobileNum;
104 
105 +(NSString *)stringAddStarsWithString:(NSString *_Nullable)string;
106 
107 //生成二维码
108 //+ (UIImage *)creatNonInterpolatedUIImageFormCIImage:(CIImage *)image withSize:(CGFloat)size;
109 +(NSString *)countdownStartTime:(NSString *)startTime;
110 @end
   1 //
   2 //  PLZ_Tool.m
   3 //   4 //
   5 //  Created by penglaizhi on 2017/7/3.
   6 //  Copyright © 2017年 yst-fll. All rights reserved.
   7 //
   8 
   9 #import "PLZ_Tool.h"
  10 #import "AppDelegate.h"
  11 
  12 @implementation PLZ_Tool
  13 /**
  14  * 使用该函数计算时间戳
  15  * parameters : 不传参
  16  */
  17 
  18 //+(void)showMessage:(NSString *)message
  19 //{
  20 //    UIWindow * window = [UIApplication sharedApplication].keyWindow;
  21 //    __block UIView *showview =  [[UIView alloc]init];
  22 //    showview.backgroundColor = [UIColor blackColor];
  23 //    showview.frame = CGRectMake(1, 1, 1, 1);
  24 //    showview.alpha = 1.0f;
  25 //    showview.layer.cornerRadius = 5.0f;
  26 //    showview.layer.masksToBounds = YES;
  27 //    [window addSubview:showview];
  28 //
  29 //    UILabel *label = [[UILabel alloc]init];
  30 //
  31 //    NSDictionary *attribute = @{NSFontAttributeName:[UIFont systemFontOfSize:17]};
  32 //
  33 //    CGSize LabelSize = [message boundingRectWithSize:CGSizeMake(290, 9000)
  34 //                                             options: NSStringDrawingTruncatesLastVisibleLine|NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading
  35 //                                          attributes:attribute context:nil].size;
  36 //
  37 //    label.frame = CGRectMake(10, 5, LabelSize.width, LabelSize.height);
  38 //    label.text = message;
  39 //    label.textColor = [UIColor whiteColor];
  40 //    label.textAlignment = 1;
  41 //    label.backgroundColor = [UIColor clearColor];
  42 //    label.font = [UIFont boldSystemFontOfSize:15];
  43 //    [showview addSubview:label];
  44 //    showview.frame = CGRectMake((kScreenWidth - LabelSize.width - 20)/2, kScreenHeight - 100, LabelSize.width+20, LabelSize.height+10);
  45 //    [UIView animateWithDuration:2.5 animations:^{
  46 //        showview.alpha = 0;
  47 //    } completion:^(BOOL finished) {
  48 //        [showview removeFromSuperview];
  49 //        showview = nil;
  50 //    }];
  51 //}
  52 //
  53 //+(void)showMessageUp:(NSString *)message
  54 //{
  55 //    UIWindow * window = [UIApplication sharedApplication].keyWindow;
  56 //    UIView *showview =  [[UIView alloc]init];
  57 //    showview.backgroundColor = [UIColor blackColor];
  58 //    showview.frame = CGRectMake(1, 1, 1, 1);
  59 //    showview.alpha = 1.0f;
  60 //    showview.layer.cornerRadius = 5.0f;
  61 //    showview.layer.masksToBounds = YES;
  62 //    [window addSubview:showview];
  63 //
  64 //    UILabel *label = [[UILabel alloc]init];
  65 //    NSDictionary *attribute = @{NSFontAttributeName:[UIFont systemFontOfSize:17]};
  66 //
  67 //    CGSize LabelSize = [message boundingRectWithSize:CGSizeMake(290, 9000)
  68 //                                             options: NSStringDrawingTruncatesLastVisibleLine|NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading
  69 //                                          attributes:attribute context:nil].size;
  70 //    label.frame = CGRectMake(10, 5, LabelSize.width, LabelSize.height);
  71 //    label.text = message;
  72 //    label.textColor = [UIColor whiteColor];
  73 //    label.textAlignment = 1;
  74 //    label.backgroundColor = [UIColor clearColor];
  75 //    label.font = [UIFont boldSystemFontOfSize:15];
  76 //    [showview addSubview:label];
  77 //    showview.frame = CGRectMake((kScreenWidth - LabelSize.width - 20)/2, 100, LabelSize.width+20, LabelSize.height+10);
  78 //    [UIView animateWithDuration:2.5 animations:^{
  79 //        showview.alpha = 0;
  80 //    } completion:^(BOOL finished) {
  81 //        [showview removeFromSuperview];
  82 //    }];
  83 //}
  84 
  85 //网络请求数据
  86 +(void)sendPOSTWithUrl:(NSString *)url parameters:(NSDictionary *)dict success:(SuccessBlock)successBlock fail:(FailBlock)failBlock :(BOOL)isNeed
  87 {
  88     if (isNeed) {
  89         [JHHJView showLoadingOnTheKeyWindowWithType:JQXLoading];
  90 
  91     }
  92 //    if ([NetworkTool getNetworkStatus] == NotReachable) {
  93 ////        UIViewController *VC = [LFYCommonTool getCurrentVC];
  94 ////        [ALToastView toastInView:VC.view withText:@"网络无法连接,请稍后再试"];
  95 //    }else{
  96     //加签方法
  97 //    NSString *url1 = [url substringFromIndex:26];//本地
  98 //    NSString *url1 = [url substringFromIndex:27];//测试
  99     NSMutableDictionary * dic = [EncryptTool encryptParamter:dict withUrl:url];
 100 
 101     NSString *url1 = [url substringFromIndex:28];//正式
 102 //    dict = [YSTFileManageTool encryptChangeDic2:dict AndUrl:url1];
 103         AppDelegate *app = (AppDelegate *)[[UIApplication sharedApplication] delegate];
 104         AFHTTPSessionManager *manager = [app sharedHTTPSession];
 105 
 106     
 107         //        AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
 108 
 109         manager.responseSerializer = [AFHTTPResponseSerializer serializer];
 110         manager.requestSerializer.timeoutInterval = 10;
 111     
 112 //    if (kTOKEN) {
 113 //        [manager.requestSerializer setValue:[NSString stringWithFormat:@"Bearer %@",kTOKEN] forHTTPHeaderField:@"Authorization"];
 114 //    }
 115 //    NSLog(@"%@------==-----%@0-0%@--9%@",kTOKEN,url1,url,dict);
 116     
 117     manager.requestSerializer.timeoutInterval = 10;
 118 //    manager.responseSerializer=[AFJSONResponseSerializer serializer];
 119 //    manager.responseSerializer.acceptableContentTypes  = [NSSet setWithObjects:@"application/xml",@"text/html",@"text/xml",@"text/plain",@"application/json",nil];
 120         manager.responseSerializer=[AFHTTPResponseSerializer serializer];
 121     NSLog(@"%@",url);
 122 //        NSDictionary *Dic  = [EncryptTool encryptParamter:dict withUrl:url];
 123         [manager POST:url parameters:dic success:^(NSURLSessionDataTask *task, id responseObject) {
 124             
 125             [JHHJView hideLoading];
 126             NSDictionary *dic_ = [NSJSONSerialization JSONObjectWithData:responseObject options:0 error:nil];
 127             successBlock(dic_);
 128             NSLog(@"QJGlobalAFN>>dic = %@",dic_);
 129 //            [NSObject creatPropertyCodeWithDictionary:dic_];
 130 
 131         } failure:^(NSURLSessionDataTask *task, NSError *error) {
 132                     [JHHJView hideLoading];
 133             failBlock(error);
 134             NSLog(@"QJGlobalAFN>>error = %@",error);
 135 //            [JHHJView hideLoading];
 136 
 137         }];
 138         
 139 //    }
 140     
 141     
 142     
 143     //    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
 144     //    //申明返回的是JSON数据
 145     //    manager.responseSerializer = [AFJSONResponseSerializer serializer];
 146     //    //申明请求的数据是json类型
 147     //    // manager.requestSerializer=[AFJSONRequestSerializer serializer];
 148     //    //如果报接受类型不一致请替换一致text/html/plain或别的
 149     //    manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/plain"];
 150     //    manager.requestSerializer.timeoutInterval = 10.0;//超时
 151     //
 152     //
 153     //    [manager POST:url  parameters:dict
 154     //
 155     //          success:^(AFHTTPRequestOperation *operation,NSDictionary * responseObject) {
 156     //
 157     //            successBlock(responseObject);
 158     //          }failure:^(AFHTTPRequestOperation *operation,NSError *error) {
 159     //
 160     //              failBlock(error);
 161     //          }];
 162     
 163 }
 164 
 165 //网络请求数据
 166 + (void)sendGETWithUrl:(NSString *)url parameters:(NSDictionary *)dict success:(SuccessBlock)successBlock fail:(FailBlock)failBlock
 167 {
 168         [JHHJView showLoadingOnTheKeyWindowWithType:JQXLoading];
 169     AppDelegate *app = (AppDelegate *)[[UIApplication sharedApplication] delegate];
 170     AFHTTPSessionManager *manager = [app sharedHTTPSession];
 171 //    NSString *url1 = [url substringFromIndex:27];//测试
 172     NSString *url1 = [url substringFromIndex:28];//正式
 173 //    NSString *url1 = [url substringFromIndex:26];//本地
 174 
 175 //    dict = [YSTFileManageTool encryptChangeDic2:dict AndUrl:url1];
 176 
 177 //    NSLog(@"%@^^^^^^^^^^",dict);
 178     
 179 //    manager.responseSerializer = [AFHTTPResponseSerializer serializer];
 180 //    [manager.requestSerializer setValue:[NSString stringWithFormat:@"YTX-C;ios %@;%@;v%@",[UIDevice systemVersion],CUREENRBUILD,CUREENRVERSION] forHTTPHeaderField:@"User-Agent"];
 181     
 182 //    if (kTOKEN) {
 183 //        [manager.requestSerializer setValue:[NSString stringWithFormat:@"Bearer %@",kTOKEN] forHTTPHeaderField:@"Authorization"];
 184 //    }
 185     manager.requestSerializer.timeoutInterval = 15;
 186     
 187     manager.responseSerializer.acceptableContentTypes  = [NSSet setWithObjects:@"application/xml",@"text/html",@"text/xml",@"text/plain",@"application/json",nil];
 188     
 189     manager.responseSerializer=[AFHTTPResponseSerializer serializer];
 190     
 191 
 192     [manager GET:url parameters:dict success:^(NSURLSessionDataTask *task, id responseObject) {
 193             [JHHJView hideLoading];
 194         NSDictionary *dic_ = [NSJSONSerialization JSONObjectWithData:responseObject options:0 error:nil];
 195         successBlock(dic_);
 196         NSLog(@"🍉%@",dic_);
 197 
 198     } failure:^(NSURLSessionDataTask *task, NSError *error) {
 199         failBlock(error);
 200                 [JHHJView hideLoading];
 201         NSLog(@"QJGlobalAFN>>error = %@",error);
 202 //        [JHHJView hideLoading];
 203 
 204     }];
 205 }
 206 
 207 /**
 208  * 判断是否有网
 209  * parameters : 不传参
 210  */
 211 
 212 //+ (BOOL)isCheckNetwork{
 213 //
 214 //    JQXReachability *Reacha_ = [JQXReachability reachabilityWithHostName:REACHABILNETWORK];
 215 //    NetworkStatus netStatus_ = [Reacha_ currentReachabilityStatus];
 216 //
 217 //    switch (netStatus_) {
 218 //        case NotReachable:
 219 //            return FALSE;
 220 //            break;
 221 //        case ReachableViaWWAN:
 222 //            return TRUE;
 223 //            break;
 224 //        case ReachableViaWiFi:
 225 //            return TRUE;
 226 //        default:
 227 //            return FALSE;
 228 //            break;
 229 //    }
 230 //
 231 //    return FALSE;
 232 
 233 //使用
 234 //    // 判断是否连接网络
 235 //    if (![QJGlobalControl isCheckNetwork]) {
 236 //
 237 //        [self showHUD:@"您的网络好像有问题"];     //如果没有连接到网络
 238 //        return;
 239 //    }
 240 //}
 241 /*
 242  
 243  *
 244  *color:支持@“#123456”、 @“0X123456”、 @“123456”三种格式
 245  
 246  */
 247 + (UIColor *)colorWithHexString:(NSString *)color alpha:(CGFloat)alpha
 248 {
 249     //删除字符串中的空格
 250     NSString *cString = [[color stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] uppercaseString];
 251     // String should be 6 or 8 characters
 252     if ([cString length] < 6)
 253     {
 254         return [UIColor clearColor];
 255     }
 256     // strip 0X if it appears
 257     //如果是0x开头的,那么截取字符串,字符串从索引为2的位置开始,一直到末尾
 258     if ([cString hasPrefix:@"0X"])
 259     {
 260         cString = [cString substringFromIndex:2];
 261     }
 262     //如果是#开头的,那么截取字符串,字符串从索引为1的位置开始,一直到末尾
 263     if ([cString hasPrefix:@"#"])
 264     {
 265         cString = [cString substringFromIndex:1];
 266     }
 267     if ([cString length] != 6)
 268     {
 269         return [UIColor clearColor];
 270     }
 271     
 272     // Separate into r, g, b substrings
 273     NSRange range;
 274     range.location = 0;
 275     range.length = 2;
 276     //r
 277     NSString *rString = [cString substringWithRange:range];
 278     //g
 279     range.location = 2;
 280     NSString *gString = [cString substringWithRange:range];
 281     //b
 282     range.location = 4;
 283     NSString *bString = [cString substringWithRange:range];
 284     
 285     // Scan values
 286     unsigned int r, g, b;
 287     [[NSScanner scannerWithString:rString] scanHexInt:&r];
 288     [[NSScanner scannerWithString:gString] scanHexInt:&g];
 289     [[NSScanner scannerWithString:bString] scanHexInt:&b];
 290     return [UIColor colorWithRed:((float)r / 255.0f) green:((float)g / 255.0f) blue:((float)b / 255.0f) alpha:alpha];
 291 }
 292 
 293 /*
 294  
 295  *
 296  *color:支持@“#123456”、 @“0X123456”、 @“123456”三种格式
 297  
 298  */
 299 + (UIColor *)colorWithHexString:(NSString *)color
 300 {
 301     return [self colorWithHexString:color alpha:1.0f];
 302 }
 303 //过滤表情
 304 + (NSString *)filterEmoji:(NSString *)string {
 305     NSUInteger len = [string lengthOfBytesUsingEncoding:NSUTF8StringEncoding];
 306     const char *utf8 = [string UTF8String];
 307     char *newUTF8 = malloc( sizeof(char) * len );
 308     int j = 0;
 309     
 310     //0xF0(4) 0xE2(3) 0xE3(3) 0xC2(2) 0x30---0x39(4)
 311     for ( int i = 0; i < len; i++ ) {
 312         unsigned int c = utf8;
 313         BOOL isControlChar = NO;
 314         if ( c == 4294967280 ||
 315             c == 4294967089 ||
 316             c == 4294967090 ||
 317             c == 4294967091 ||
 318             c == 4294967092 ||
 319             c == 4294967093 ||
 320             c == 4294967094 ||
 321             c == 4294967095 ||
 322             c == 4294967096 ||
 323             c == 4294967097 ||
 324             c == 4294967088 ) {
 325             i = i + 3;
 326             isControlChar = YES;
 327         }
 328         if ( c == 4294967266 || c == 4294967267 ) {
 329             i = i + 2;
 330             isControlChar = YES;
 331         }
 332         if ( c == 4294967234 ) {
 333             i = i + 1;
 334             isControlChar = YES;
 335         }
 336         if ( !isControlChar ) {
 337             newUTF8[j] = utf8;
 338             j++;
 339         }
 340     }
 341     newUTF8[j] = '\0';
 342     NSString *encrypted = [NSString stringWithCString:(const char*)newUTF8
 343                                              encoding:NSUTF8StringEncoding];
 344     free( newUTF8 );
 345     return encrypted;
 346 }
 347 #pragma mark - 富文本实现
 348 + (NSMutableAttributedString *)String:(NSString *)String RangeString:(NSString *)RangeString
 349 {
 350     NSMutableAttributedString *hintString=[[NSMutableAttributedString alloc]initWithString:String];
 351     //获取要调整颜色的文字位置,调整颜色
 352     NSRange range1=[[hintString string] rangeOfString:RangeString];    
 353     
 354     [hintString addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:range1];
 355     
 356     return hintString;
 357 }
 358 //新添加富文本
 359 + (NSMutableAttributedString *)String2:(NSString *)String RangeString:(NSString *)RangeString colorString:(NSString *)colorString Size:(CGFloat)size
 360 {
 361     NSMutableAttributedString *hintString=[[NSMutableAttributedString alloc]initWithString:String];
 362     //获取要调整颜色的文字位置,调整颜色
 363     NSRange range1=[[hintString string] rangeOfString:RangeString];
 364         
 365     NSDictionary *attributeDict = [NSDictionary dictionaryWithObjectsAndKeys:
 366                                    [UIFont fontWithName:@"Helvetica" size:size],NSFontAttributeName,
 367                                    [UIColor ColorWithString:colorString],NSForegroundColorAttributeName
 368                                    ,nil];
 369     //    NSMutableAttributedString *AttributedStr = [[NSMutableAttributedString alloc]initWithString:@"今天天气不错呀" attributes:attributeDict];
 370     
 371     [hintString addAttributes:attributeDict range:range1];
 372     
 373     return hintString;
 374 }
 375 
 376 //
 377 //邮箱
 378 + (BOOL) validateEmail:(NSString *)email
 379 {
 380     
 381 //    NSString *regex = @"^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$";
 382 //    
 383 //    NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
 384 //    
 385 //    return [emailTest evaluateWithObject:email];
 386 
 387     NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
 388     NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
 389     return [emailTest evaluateWithObject:email];
 390 }
 391 //-(BOOL)isValidateEmail:(NSString *)email
 392 //{
 393 //    NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
 394 //    NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
 395 //    return [emailTest evaluateWithObject:email];
 396 //}
 397 //+ (BOOL)checkEmail:(NSString *)email{
 398 //    
 399 //    //^(\\w)+(\\.\\w+)*@(\\w)+((\\.\\w{2,3}){1,3})$
 400 //    
 401 //    
 402 //}
 403 
 404 
 405 
 406 //手机号码验证
 407 + (BOOL) validateMobile:(NSString *)mobileNum
 408 {
 409     NSString *str1 = [mobileNum substringToIndex:0];
 410     NSLog(@"===stri&%@",str1);
 411     
 412     if (mobileNum.length==11&&[str1 isEqualToString:@"1"]) {
 413         return 1;
 414     }else{
 415         return 0;
 416     }
 417 //    NSLog(@"mobile = %@",mobileNum);
 418 //
 419 //    /**
 420 //     
 421 //     * 手机号码
 422 //     
 423 //     * 移动:134[0-8],135,136,137,138,139,150,151,157,158,159,182,187,188
 424 //     
 425 //     * 联通:130,131,132,152,155,156,185,186
 426 //     
 427 //     * 电信:133,1349,153,180,189
 428 //     
 429 //     */
 430 //    
 431 //    NSString * MOBILE = @"^1(3[0-9]|5[0-35-9]|8[025-9])\\d{8}$";
 432 //    
 433 //    /**
 434 //     
 435 //     * 中国移动:China Mobile
 436 //     
 437 //     * 134[0-8],135,136,137,138,139,150,151,157,158,159,182,187,188
 438 //     
 439 //     */
 440 //    
 441 //    NSString * CM = @"^1(34[0-8]|(3[5-9]|5[017-9]|8[278])\\d)\\d{7}$";
 442 //    
 443 //    /**
 444 //     
 445 //     * 中国联通:China Unicom
 446 //     
 447 //     * 130,131,132,152,155,156,185,186
 448 //     
 449 //     */
 450 //    
 451 //    NSString * CU = @"^1(3[0-2]|5[2567]|7[0-9]|8[56])\\d{8}$";
 452 //    
 453 //    /**
 454 //     
 455 //     * 中国电信:China Telecom
 456 //     
 457 //     * 133,1349,153,180,189
 458 //     
 459 //     */
 460 //    
 461 //    NSString * CT = @"^1((33|53|8[09])[0-9]|349)\\d{7}$";
 462 //    
 463 //    /**
 464 //     
 465 //     *大陆地区固话及小灵通
 466 //     
 467 //     * 区号:010,020,021,022,023,024,025,027,028,029
 468 //     
 469 //     *号码:七位或八位
 470 //     
 471 //     */
 472 //    
 473 //     NSString * PHS = @"^0(10|2[0-5789]|\\d{3})\\d{7,8}$";
 474 //    
 475 //    
 476 //    
 477 //    NSPredicate *regextestmobile = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", MOBILE];
 478 //    
 479 //    NSPredicate *regextestcm = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CM];
 480 //    
 481 //    NSPredicate *regextestcu = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CU];
 482 //    
 483 //    NSPredicate *regextestct = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CT];
 484 //  
 485 //    NSPredicate *regextestPHS = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", PHS];
 486 //    
 487 //    
 488 //    
 489 //    if (([regextestmobile evaluateWithObject:mobileNum] == YES)
 490 //        
 491 //        || ([regextestcm evaluateWithObject:mobileNum] == YES)
 492 //        
 493 //        || ([regextestct evaluateWithObject:mobileNum] == YES)
 494 //        
 495 //        || ([regextestPHS evaluateWithObject:mobileNum] == YES)
 496 //        
 497 //        || ([regextestcu evaluateWithObject:mobileNum] == YES))
 498 //        
 499 //    {
 500 //        
 501 //        return YES;
 502 //        
 503 //    }
 504 //    
 505 //    else
 506 //        
 507 //    {
 508 //        return NO;
 509 //        
 510 //    }
 511     
 512     
 513 //    //手机号以13, 15,18开头,八个 \d 数字字符
 514 //    NSString *phoneRegex = @"^((13[0-9])|(15[^4,\\D])|(18[0,0-9]))\\d{8}$";
 515 //    NSPredicate *phoneTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",phoneRegex];
 516 //    return [phoneTest evaluateWithObject:mobile];
 517 }
 518 
 519 #pragma mark - 获取当前时间的 时间戳
 520 + (NSInteger)getNowTimestamp{
 521     
 522     NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
 523     
 524     [formatter setDateStyle:NSDateFormatterMediumStyle];
 525     
 526     [formatter setTimeStyle:NSDateFormatterShortStyle];
 527     
 528     [formatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"];
 529     
 530     NSTimeZone* timeZone = [NSTimeZone timeZoneWithName:@"Asia/Beijing"];
 531     
 532     [formatter setTimeZone:timeZone];
 533     
 534     NSDate *datenow = [NSDate date];
 535     
 536     NSInteger timeSp = [[NSNumber numberWithDouble:[datenow timeIntervalSince1970]] integerValue];
 537     
 538     return timeSp;
 539     
 540 }
 541 #pragma 实现富文本
 542 + (NSMutableAttributedString *_Nullable)String:(NSString *_Nullable)String SetRangeString:(NSString *_Nullable)RangeString setColor:(UIColor *_Nullable)Color SetFont:(UIFont *_Nullable)Font{
 543     
 544     NSMutableAttributedString *hintString=[[NSMutableAttributedString alloc]initWithString:String];
 545     //获取要调整颜色的文字位置,调整颜色
 546     NSRange range1=[[hintString string]rangeOfString:RangeString];
 547     [hintString addAttribute:NSForegroundColorAttributeName value:Color range:range1];
 548     [hintString addAttribute:NSFontAttributeName value:Font range:range1];
 549     return hintString;
 550     
 551 }
 552 //将毫秒值转成date
 553 + (NSString *)ConvertStrToTime:(NSString *)timeStr
 554 
 555 {
 556     
 557     long long time=[timeStr longLongValue];
 558     
 559     NSDate *d = [[NSDate alloc]initWithTimeIntervalSince1970:time/1000.0];
 560     
 561     NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
 562     
 563     [formatter setDateFormat:@"yyyy-MM-dd HH:mm"];
 564     
 565     NSString *timeString=[formatter stringFromDate:d];
 566 //    if ([timeString isEqualToString:@"1970-01-01 08:00"]) {
 567 //        return @"暂无服务时间";
 568 //    }
 569     return timeString;
 570     
 571 }
 572 +(NSInteger)GetContentBackStyleToString:(NSString *)string
 573 {
 574     if ([string isEqualToString:@"(null)"]||[string isEqualToString:@"<null>"]||string== nil||string== NULL||[string isEqualToString:@""]) {
 575         return 0;
 576     }else{
 577         return 1;
 578     }
 579 }
 580 + (BOOL)stringContainsEmoji:(NSString *)string
 581 {
 582     __block BOOL returnValue =NO;
 583     [string enumerateSubstringsInRange:NSMakeRange(0, [string length]) options:NSStringEnumerationByComposedCharacterSequences usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {
 584         const unichar hs = [substring characterAtIndex:0];
 585         // surrogate pair
 586         if (0xd800) {
 587             if (0xd800 <= hs && hs <= 0xdbff) {
 588                 if (substring.length > 1) {
 589                     const unichar ls = [substring characterAtIndex:1];
 590                     const int uc = ((hs - 0xd800) * 0x400) + (ls - 0xdc00) + 0x10000;
 591                     if (0x1d000 <= uc && uc <= 0x1f77f) {
 592                         returnValue =YES;
 593                     }
 594                 }
 595             }else if (substring.length > 1) {
 596                 const unichar ls = [substring characterAtIndex:1];
 597                 if (ls == 0x20e3) {
 598                     returnValue =YES;
 599                 }
 600             }else {
 601                 // non surrogate
 602                 //限制的是拼音
 603                 //                if (0x2100 <= hs && hs <= 0x27ff) {
 604                 //                    returnValue =YES;
 605                 //                }else
 606                 if (0x2B05 <= hs && hs <= 0x2b07) {
 607                     returnValue =YES;
 608                 }else if (0x2934 <= hs && hs <= 0x2935) {
 609                     returnValue =YES;
 610                 }else if (0x3297 <= hs && hs <= 0x3299) {
 611                     returnValue =YES;
 612                 }else if (hs == 0xa9 || hs == 0xae || hs == 0x303d || hs == 0x3030 || hs == 0x2b55 || hs == 0x2b1c || hs == 0x2b1b || hs == 0x2b50) {
 613                     returnValue =YES;
 614                 }
 615             }
 616         }
 617     }];
 618     return returnValue;
 619 }
 620 
 621 -(void)textFiledEditChangedN:(UITextField *)field lenth:(CGFloat)lenth{
 622     
 623     NSRegularExpression *regularExpression = [NSRegularExpression regularExpressionWithPattern:@"[^\\u0020-\\u007E\\u00A0-\\u00BE\\u2E80-\\uA4CF\\uF900-\\uFAFF\\uFE30-\\uFE4F\\uFF00-\\uFFEF\\u0080-\\u009F\\u2000-\\u201f\r\n]" options:0 error:nil];
 624     
 625     NSString *noEmojiStr = [regularExpression stringByReplacingMatchesInString:field.text options:0 range:NSMakeRange(0, field.text.length) withTemplate:@""];
 626     
 627     if (![noEmojiStr isEqualToString:field.text]) {
 628         field.text = noEmojiStr;
 629     }
 630     @try{
 631         
 632         UITextField *textField = field;
 633         NSString *str = [[textField text] stringByReplacingOccurrencesOfString:@"?" withString:@""];
 634         NSLog(@"str--%@",str);
 635         UITextRange *selectedRange = [textField markedTextRange];
 636         UITextPosition *position = [textField positionFromPosition:selectedRange.start offset:0];
 637         
 638         if (!position) {
 639             CGFloat ascLen=[self countW:str :lenth];
 640             NSLog(@"ascLen------------------%f",ascLen);
 641             if (ascLen > 6) {
 642                 NSString *strNew = [NSString stringWithString:str];
 643                 NSLog(@"strNew--%@",strNew);
 644                 NSLog(@"_subLen%f",lenth);
 645                 if (lenth==0) {
 646                     lenth=strNew.length;
 647                 }
 648                 [textField setText:[strNew substringToIndex:lenth]];
 649             }
 650         }
 651         else{
 652         }
 653     }
 654     @catch(NSException *exception) {
 655         NSLog(@"exception:%@", exception);
 656     }
 657     @finally {
 658         
 659     }
 660 }
 661 -(void)textViewEditChangedN:(UITextView *)textView lenth:(CGFloat)lenth{
 662     
 663     NSRegularExpression *regularExpression = [NSRegularExpression regularExpressionWithPattern:@"[^\\u0020-\\u007E\\u00A0-\\u00BE\\u2E80-\\uA4CF\\uF900-\\uFAFF\\uFE30-\\uFE4F\\uFF00-\\uFFEF\\u0080-\\u009F\\u2000-\\u201f\r\n]" options:0 error:nil];
 664     
 665     NSString *noEmojiStr = [regularExpression stringByReplacingMatchesInString:textView.text options:0 range:NSMakeRange(0, textView.text.length) withTemplate:@""];
 666     
 667     if (![noEmojiStr isEqualToString:textView.text]) {
 668         textView.text = noEmojiStr;
 669     }
 670     @try{
 671         
 672         UITextView *textField = textView;
 673         NSString *str = [[textField text] stringByReplacingOccurrencesOfString:@"?" withString:@""];
 674         NSLog(@"str--%@",str);
 675         UITextRange *selectedRange = [textField markedTextRange];
 676         UITextPosition *position = [textField positionFromPosition:selectedRange.start offset:0];
 677         
 678         if (!position) {
 679             CGFloat ascLen=[self countW:str :lenth];
 680             NSLog(@"ascLen------------------%f",ascLen);
 681             if (ascLen > lenth) {
 682                 NSString *strNew = [NSString stringWithString:str];
 683                 NSLog(@"strNew--%@",strNew);
 684                 NSLog(@"_subLen%f",lenth);
 685                 if (lenth==0) {
 686                     lenth=strNew.length;
 687                 }
 688                 [textField setText:[strNew substringToIndex:lenth]];
 689             }
 690         }
 691         else{
 692         }
 693     }
 694     @catch(NSException *exception) {
 695         NSLog(@"exception:%@", exception);
 696     }
 697     @finally {
 698         
 699     }
 700 }
 701 - (CGFloat)countW:(NSString *)s :(CGFloat)lenth
 702 {
 703     int i;CGFloat n=[s length],l=0,a=0,b=0;
 704     CGFloat wLen=0;
 705     unichar c;
 706     for(i=0;i<n;i++){
 707         c=[s characterAtIndex:i];
 708         if(isblank(c)){
 709             b++;
 710         }else if(isascii(c)){
 711             a++;
 712         }else{
 713             l++;
 714         }
 715         wLen=l+(CGFloat)((CGFloat)(a+b)/2.0);
 716         NSLog(@"wLen--%f",wLen);
 717         if (wLen>=7.5&&wLen<8.5) {
 718             lenth=l+a+b;
 719         }
 720     }
 721     if(a==0 && l==0)
 722     {
 723         lenth=0;
 724         return 0;
 725     }
 726     else{
 727         
 728         return wLen;
 729     }
 730 }
 731 
 732 
 733 
 734 
 735 #pragma mark - 获取设备当前网络IP地址
 736 + (NSString *)getIPAddress:(BOOL)preferIPv4
 737 {
 738     NSArray *searchArray = preferIPv4 ?
 739     @[ /*IOS_VPN @"/" IP_ADDR_IPv4, IOS_VPN @"/" IP_ADDR_IPv6,*/ IOS_WIFI @"/" IP_ADDR_IPv4, IOS_WIFI @"/" IP_ADDR_IPv6, IOS_CELLULAR @"/" IP_ADDR_IPv4, IOS_CELLULAR @"/" IP_ADDR_IPv6 ] :
 740     @[ /*IOS_VPN @"/" IP_ADDR_IPv6, IOS_VPN @"/" IP_ADDR_IPv4,*/ IOS_WIFI @"/" IP_ADDR_IPv6, IOS_WIFI @"/" IP_ADDR_IPv4, IOS_CELLULAR @"/" IP_ADDR_IPv6, IOS_CELLULAR @"/" IP_ADDR_IPv4 ] ;
 741     NSDictionary *addresses = [self getIPAddresses];
 742     NSLog(@"addresses: %@", addresses);
 743     __block NSString *address;
 744     [searchArray enumerateObjectsUsingBlock:^(NSString *key, NSUInteger idx, BOOL *stop)
 745      {
 746          address = addresses[key];
 747          if(address) *stop = YES;
 748      } ];
 749     return address ? address : @"0.0.0.0";
 750 }
 751 
 752 + (BOOL)isValidatIP:(NSString *)ipAddress {
 753     if (ipAddress.length == 0) {
 754         return NO;
 755     }
 756     NSString *urlRegEx = @"^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\."
 757     "([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\."
 758     "([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\."
 759     "([01]?\\d\\d?|2[0-4]\\d|25[0-5])$";
 760     
 761     NSError *error;
 762     NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:urlRegEx options:0 error:&error];
 763     
 764     if (regex != nil) {
 765         NSTextCheckingResult *firstMatch=[regex firstMatchInString:ipAddress options:0 range:NSMakeRange(0, [ipAddress length])];
 766         
 767         if (firstMatch) {
 768             NSRange resultRange = [firstMatch rangeAtIndex:0];
 769             NSString *result=[ipAddress substringWithRange:resultRange];
 770             //输出结果
 771             NSLog(@"%@",result);
 772             return YES;
 773         }
 774     }
 775     return NO;
 776 }
 777 
 778 + (NSDictionary *)getIPAddresses
 779 {
 780     NSMutableDictionary *addresses = [NSMutableDictionary dictionaryWithCapacity:8];
 781     // retrieve the current interfaces - returns 0 on success
 782     struct ifaddrs *interfaces;
 783     if(!getifaddrs(&interfaces)) {
 784         // Loop through linked list of interfaces
 785         struct ifaddrs *interface;
 786         for(interface=interfaces; interface; interface=interface->ifa_next) {
 787             if(!(interface->ifa_flags & IFF_UP) /* || (interface->ifa_flags & IFF_LOOPBACK) */ ) {
 788                 continue; // deeply nested code harder to read
 789             }
 790             const struct sockaddr_in *addr = (const struct sockaddr_in*)interface->ifa_addr;
 791             char addrBuf[ MAX(INET_ADDRSTRLEN, INET6_ADDRSTRLEN) ];
 792             if(addr && (addr->sin_family==AF_INET || addr->sin_family==AF_INET6)) {
 793                 NSString *name = [NSString stringWithUTF8String:interface->ifa_name];
 794                 NSString *type;
 795                 if(addr->sin_family == AF_INET) {
 796                     if(inet_ntop(AF_INET, &addr->sin_addr, addrBuf, INET_ADDRSTRLEN)) {
 797                         type = IP_ADDR_IPv4;
 798                     }
 799                 } else {
 800                     const struct sockaddr_in6 *addr6 = (const struct sockaddr_in6*)interface->ifa_addr;
 801                     if(inet_ntop(AF_INET6, &addr6->sin6_addr, addrBuf, INET6_ADDRSTRLEN)) {
 802                         type = IP_ADDR_IPv6;
 803                     }
 804                 }
 805                 if(type) {
 806                     NSString *key = [NSString stringWithFormat:@"%@/%@", name, type];
 807                     addresses[key] = [NSString stringWithUTF8String:addrBuf];
 808                 }
 809             }
 810         }
 811         // Free memory
 812         freeifaddrs(interfaces);
 813     }
 814     return [addresses count] ? addresses : nil;
 815 }
 816 + (NSString *)deviceIPAdress {
 817     NSString *address = @"an error occurred when obtaining ip address";
 818     struct ifaddrs *interfaces = NULL;
 819     struct ifaddrs *temp_addr = NULL;
 820     int success = 0;
 821     
 822     success = getifaddrs(&interfaces);
 823     
 824     if (success == 0) { // 0 表示获取成功
 825         
 826         temp_addr = interfaces;
 827         while (temp_addr != NULL) {
 828             if( temp_addr->ifa_addr->sa_family == AF_INET) {
 829                 // Check if interface is en0 which is the wifi connection on the iPhone
 830                 if ([[NSString stringWithUTF8String:temp_addr->ifa_name] isEqualToString:@"en0"]) {
 831                     // Get NSString from C String
 832                     address = [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)temp_addr->ifa_addr)->sin_addr)];
 833                 }
 834             }
 835             
 836             temp_addr = temp_addr->ifa_next;
 837         }
 838     }
 839     
 840     freeifaddrs(interfaces);
 841     return address?address:@"0.0.0.0";
 842 }
 843 
 844 
 845 //1.获取电池电量(一般用百分数表示,大家自行处理就好)
 846 -(CGFloat)getBatteryQuantity
 847 {
 848     return [[UIDevice currentDevice] batteryLevel];
 849 }
 850 //2.获取电池状态(UIDeviceBatteryState为枚举类型)
 851 -(UIDeviceBatteryState)getBatteryStauts
 852 {
 853     return [UIDevice currentDevice].batteryState;
 854 }
 855 //3.获取总内存大小
 856 -(long long)getTotalMemorySize
 857 {
 858     return [NSProcessInfo processInfo].physicalMemory;
 859 }
 860 //4.获取当前可用内存
 861 //-(long long)getAvailableMemorySize
 862 //{
 863 //    vm_statistics_data_t vmStats;
 864 //    mach_msg_type_number_t infoCount = HOST_VM_INFO_COUNT;
 865 //    kern_return_t kernReturn = host_statistics(mach_host_self(), HOST_VM_INFO, (host_info_t)&vmStats, &infoCount);
 866 //    if (kernReturn != KERN_SUCCESS)
 867 //    {
 868 //        return NSNotFound;
 869 //    }
 870 //    return ((vm_page_size * vmStats.free_count + vm_page_size * vmStats.inactive_count));
 871 //}
 872 //5.获取已使用内存
 873 //- (double)getUsedMemory
 874 //{
 875 //    task_basic_info_data_t taskInfo;
 876 //    mach_msg_type_number_t infoCount = TASK_BASIC_INFO_COUNT;
 877 //    kern_return_t kernReturn = task_info(mach_task_self(),
 878 //                                         TASK_BASIC_INFO,
 879 //                                         (task_info_t)&taskInfo,
 880 //                                         &infoCount);
 881 //    
 882 //    if (kernReturn != KERN_SUCCESS
 883 //        ) {
 884 //        return NSNotFound;
 885 //    }
 886 //    
 887 //    return taskInfo.resident_size;
 888 //}
 889 //6.获取总磁盘容量
 890 //-(long long)getTotalDiskSize
 891 //{
 892 //    struct statfs buf;
 893 //    unsigned long long freeSpace = -1;
 894 //    if (statfs("/var", &buf) >= 0)
 895 //    {
 896 //        freeSpace = (unsigned long long)(buf.f_bsize * buf.f_blocks);
 897 //    }
 898 //    return freeSpace;
 899 //}
 900 
 901 //7.获取可用磁盘容量
 902 //-(long long)getAvailableDiskSize
 903 //{
 904 //    struct statfs buf;
 905 //    unsigned long long freeSpace = -1;
 906 //    if (statfs("/var", &buf) >= 0)
 907 //    {
 908 //        freeSpace = (unsigned long long)(buf.f_bsize * buf.f_bavail);
 909 //    }
 910 //    return freeSpace;
 911 //}
 912 //8.容量转换
 913 -(NSString *)fileSizeToString:(unsigned long long)fileSize
 914 {
 915     NSInteger KB = 1024;
 916     NSInteger MB = KB*KB;
 917     NSInteger GB = MB*KB;
 918     
 919     if (fileSize < 10)  {
 920         return @"0 B";
 921     }else if (fileSize < KB)    {
 922         return @"< 1 KB";
 923     }else if (fileSize < MB)    {
 924         return [NSString stringWithFormat:@"%.1f KB",((CGFloat)fileSize)/KB];
 925     }else if (fileSize < GB)    {
 926         return [NSString stringWithFormat:@"%.1f MB",((CGFloat)fileSize)/MB];
 927     }else   {
 928         return [NSString stringWithFormat:@"%.1f GB",((CGFloat)fileSize)/GB];
 929     }
 930 }
 931 ////8.型号
 932 //+ (NSString *)getCurrentDeviceModel:(UIViewController *)controller
 933 //{
 934 //    int mib[2];
 935 //    size_t len;
 936 //    char *machine;
 937 //    
 938 //    mib[0] = CTL_HW;
 939 //    mib[1] = HW_MACHINE;
 940 //    sysctl(mib, 2, NULL, &len, NULL, 0);
 941 //    machine = malloc(len);
 942 //    sysctl(mib, 2, machine, &len, NULL, 0);
 943 //    
 944 //    NSString *platform = [NSString stringWithCString:machine encoding:NSASCIIStringEncoding];
 945 //    free(machine);
 946 //    
 947 //    if ([platform isEqualToString:@"iPhone3,1"]) return @"iPhone 4 (A1332)";
 948 //    if ([platform isEqualToString:@"iPhone3,2"]) return @"iPhone 4 (A1332)";
 949 //    if ([platform isEqualToString:@"iPhone3,3"]) return @"iPhone 4 (A1349)";
 950 //    if ([platform isEqualToString:@"iPhone4,1"]) return @"iPhone 4s (A1387/A1431)";
 951 //    if ([platform isEqualToString:@"iPhone5,1"]) return @"iPhone 5 (A1428)";
 952 //    if ([platform isEqualToString:@"iPhone5,2"]) return @"iPhone 5 (A1429/A1442)";
 953 //    if ([platform isEqualToString:@"iPhone5,3"]) return @"iPhone 5c (A1456/A1532)";
 954 //    if ([platform isEqualToString:@"iPhone5,4"]) return @"iPhone 5c (A1507/A1516/A1526/A1529)";
 955 //    if ([platform isEqualToString:@"iPhone6,1"]) return @"iPhone 5s (A1453/A1533)";
 956 //    if ([platform isEqualToString:@"iPhone6,2"]) return @"iPhone 5s (A1457/A1518/A1528/A1530)";
 957 //    if ([platform isEqualToString:@"iPhone7,1"]) return @"iPhone 6 Plus (A1522/A1524)";
 958 //    if ([platform isEqualToString:@"iPhone7,2"]) return @"iPhone 6 (A1549/A1586)";
 959 //    if ([platform isEqualToString:@"iPhone8,1"]) return @"iPhone 6s";
 960 //    if ([platform isEqualToString:@"iPhone8,2"]) return @"iPhone 6s Plus";
 961 //    if ([platform isEqualToString:@"iPod1,1"])   return @"iPod Touch 1G (A1213)";
 962 //    if ([platform isEqualToString:@"iPod2,1"])   return @"iPod Touch 2G (A1288)";
 963 //    if ([platform isEqualToString:@"iPod3,1"])   return @"iPod Touch 3G (A1318)";
 964 //    if ([platform isEqualToString:@"iPod4,1"])   return @"iPod Touch 4G (A1367)";
 965 //    if ([platform isEqualToString:@"iPod5,1"])   return @"iPod Touch 5G (A1421/A1509)";
 966 //    
 967 //    if ([platform isEqualToString:@"iPad1,1"])   return @"iPad 1G (A1219/A1337)";
 968 //    if ([platform isEqualToString:@"iPad2,1"])   return @"iPad 2 (A1395)";
 969 //    if ([platform isEqualToString:@"iPad2,2"])   return @"iPad 2 (A1396)";
 970 //    if ([platform isEqualToString:@"iPad2,3"])   return @"iPad 2 (A1397)";
 971 //    if ([platform isEqualToString:@"iPad2,4"])   return @"iPad 2 (A1395+New Chip)";
 972 //    if ([platform isEqualToString:@"iPad2,5"])   return @"iPad Mini 1G (A1432)";
 973 //    if ([platform isEqualToString:@"iPad2,6"])   return @"iPad Mini 1G (A1454)";
 974 //    if ([platform isEqualToString:@"iPad2,7"])   return @"iPad Mini 1G (A1455)";
 975 //    
 976 //    if ([platform isEqualToString:@"iPad3,1"])   return @"iPad 3 (A1416)";
 977 //    if ([platform isEqualToString:@"iPad3,2"])   return @"iPad 3 (A1403)";
 978 //    if ([platform isEqualToString:@"iPad3,3"])   return @"iPad 3 (A1430)";
 979 //    if ([platform isEqualToString:@"iPad3,4"])   return @"iPad 4 (A1458)";
 980 //    if ([platform isEqualToString:@"iPad3,5"])   return @"iPad 4 (A1459)";
 981 //    if ([platform isEqualToString:@"iPad3,6"])   return @"iPad 4 (A1460)";
 982 //    
 983 //    if ([platform isEqualToString:@"iPad4,1"])   return @"iPad Air (A1474)";
 984 //    if ([platform isEqualToString:@"iPad4,2"])   return @"iPad Air (A1475)";
 985 //    if ([platform isEqualToString:@"iPad4,3"])   return @"iPad Air (A1476)";
 986 //    if ([platform isEqualToString:@"iPad4,4"])   return @"iPad Mini 2G (A1489)";
 987 //    if ([platform isEqualToString:@"iPad4,5"])   return @"iPad Mini 2G (A1490)";
 988 //    if ([platform isEqualToString:@"iPad4,6"])   return @"iPad Mini 2G (A1491)";
 989 //    
 990 //    if ([platform isEqualToString:@"i386"])      return @"iPhone Simulator";
 991 //    if ([platform isEqualToString:@"x86_64"])    return @"iPhone Simulator";
 992 //    return platform;
 993 //}
 994 ////10.当前手机连接的WIFI名称(SSID)
 995 //- (NSString *)getWifiName
 996 //{
 997 //    NSString *wifiName = nil;
 998 //    
 999 //    CFArrayRef wifiInterfaces = CNCopySupportedInterfaces();
1000 //    if (!wifiInterfaces) {
1001 //        return nil;
1002 //    }
1003 //    
1004 //    NSArray *interfaces = (__bridge NSArray *)wifiInterfaces;
1005 //    
1006 //    for (NSString *interfaceName in interfaces) {
1007 //        CFDictionaryRef dictRef = CNCopyCurrentNetworkInfo((__bridge CFStringRef)(interfaceName));
1008 //        
1009 //        if (dictRef) {
1010 //            NSDictionary *networkInfo = (__bridge NSDictionary *)dictRef;
1011 //            
1012 //            wifiName = [networkInfo objectForKey:(__bridge NSString *)kCNNetworkInfoKeySSID];
1013 //            
1014 //            CFRelease(dictRef);
1015 //        }
1016 //    }
1017 //    
1018 //    CFRelease(wifiInterfaces);
1019 //    return wifiName;
1020 //}
1021 + (BOOL)isMobileNumber:(NSString *)mobileNum
1022 {
1023     if (mobileNum.length<1) {
1024         return NO;
1025     }
1026     NSString *str1 = [mobileNum substringToIndex:1];
1027     NSLog(@"===stri&%@",str1);
1028     
1029     if (mobileNum.length==11&&[str1 isEqualToString:@"1"]) {
1030         return 1;
1031     }else{
1032         return 0;
1033     }
1034 //以上为彭来智自己修改的,下面的不用
1035     if (mobileNum.length != 11)
1036     {
1037         return NO;
1038     }
1039     /**
1040      * 手机号码:
1041      * 13[0-9], 14[5,7], 15[0, 1, 2, 3, 5, 6, 7, 8, 9], 17[6, 7, 8], 18[0-9], 170[0-9]
1042      * 移动号段: 134,135,136,137,138,139,150,151,152,157,158,159,182,183,184,187,188,147,178,1705
1043      * 联通号段: 130,131,132,155,156,185,186,145,176,1709
1044      * 电信号段: 133,153,180,181,189,177,1700
1045      */
1046     NSString *MOBILE = @"^1(3[0-9]|4[57]|5[0-35-9]|8[0-9]|7[0678])\\d{8}$";
1047     /**
1048      * 中国移动:China Mobile
1049      * 134,135,136,137,138,139,150,151,152,157,158,159,182,183,184,187,188,147,178,1705
1050      */
1051     NSString *CM = @"(^1(3[4-9]|4[7]|5[0-27-9]|7[8]|8[2-478])\\d{8}$)|(^1705\\d{7}$)";
1052     /**
1053      * 中国联通:China Unicom
1054      * 130,131,132,155,156,185,186,145,176,1709
1055      */
1056     NSString *CU = @"(^1(3[0-2]|4[5]|5[56]|7[6]|8[56])\\d{8}$)|(^1709\\d{7}$)";
1057     /**
1058      * 中国电信:China Telecom
1059      * 133,153,180,181,189,177,1700,199
1060      */
1061     NSString *CT = @"(^1(33|53|77|99|8[019])\\d{8}$)|(^1700\\d{7}$)";
1062     
1063     
1064     NSPredicate *regextestmobile = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", MOBILE];
1065     NSPredicate *regextestcm = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CM];
1066     NSPredicate *regextestcu = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CU];
1067     NSPredicate *regextestct = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CT];
1068     
1069     if (([regextestmobile evaluateWithObject:mobileNum] == YES)
1070         || ([regextestcm evaluateWithObject:mobileNum] == YES)
1071         || ([regextestct evaluateWithObject:mobileNum] == YES)
1072         || ([regextestcu evaluateWithObject:mobileNum] == YES))
1073     {
1074         return YES;
1075     }
1076     else
1077     {
1078         return NO;
1079     }
1080 }
1081 
1082 //把一个字符串除了前后各两位其他加星
1083 
1084 +(NSString *)stringAddStarsWithString:(NSString *)string
1085 {
1086     if (string.length<3) {
1087         return string;
1088     }
1089     NSString *str1 = [NSString stringWithFormat:@"%@",[string substringToIndex:1]];
1090     NSString *str2 = [NSString stringWithFormat:@"%@",[string substringFromIndex:string.length-1]];
1091     NSString *str3 = @"";
1092     for (int i = 0; i<string.length-2; i++) {
1093         
1094         str3 = [NSString stringWithFormat:@"%@*",str3];
1095         
1096     }
1097     string = [NSString stringWithFormat:@"%@%@%@",str1,str3,str2];
1098     
1099     return string;
1100 }
1101 
1102 //+ (UIImage *)creatNonInterpolatedUIImageFormCIImage:(CIImage *)image withSize:(CGFloat)size;
1103 
1104 +(NSString *)countdownStartTime:(NSString *)startTime{
1105     
1106     
1107     NSString *TIME = [startTime substringToIndex:10];
1108     NSTimeInterval time = [TIME floatValue];
1109     NSDate *oldDate = [NSDate dateWithTimeIntervalSince1970:time];
1110     
1111     //    NSDate *oldDate = [NSDate date];
1112     NSDate *currentDate = [NSDate date];
1113     NSLog(@"lastDate == %@",currentDate);
1114     
1115     NSCalendar *cal = [NSCalendar currentCalendar];
1116     unsigned int unitFlags = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;
1117     NSDateComponents *dateComponents = [cal components:unitFlags fromDate:oldDate toDate:currentDate options:0];
1118     
1119     float sec = [dateComponents hour]*3600 + [dateComponents minute]*60+ [dateComponents second];
1120     
1121     float surplusMin = (30*60 - sec)/60;
1122     
1123     if (surplusMin == 00) {
1124         return @"订单关闭";
1125     }else{
1126          return [NSString stringWithFormat:@"剩余:%d分%d秒", [dateComponents minute],[dateComponents second]];
1127     }
1128 }
1129 @end

 

posted @ 2018-08-27 09:04  红凉梦  阅读(563)  评论(0编辑  收藏  举报