- #import "Utility.h"
- @implementation Utility
- +(NSString *)createMD5:(NSString *)signString
- {
- const char*cStr =[signString UTF8String];
- unsigned char result[16];
- CC_MD5(cStr, strlen(cStr), result);
- return[NSString stringWithFormat:
- @"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X",
- result[0], result[1], result[2], result[3],
- result[4], result[5], result[6], result[7],
- result[8], result[9], result[10], result[11],
- result[12], result[13], result[14], result[15]
- ];
- }
- +(NSString *)createPostURL:(NSMutableDictionary *)params
- {
- NSString *postString=@"";
- for(NSString *key in [params allKeys])
- {
- NSString *value=[params objectForKey:key];
- postString=[postString stringByAppendingFormat:@"%@=%@&",key,value];
- }
- if([postString length]>1)
- {
- postString=[postString substringToIndex:[postString length]-1];
- }
- return postString;
- }
- +(NSString *)getCurrentDate
- {
- NSDateFormatter *dateFormatter=[[[NSDateFormatter alloc] init] autorelease];
- [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
- return [dateFormatter stringFromDate:[NSDate date]];
- }
- +(BOOL) connectedToNetwork
- {
- // Create zero addy
- struct sockaddr_in zeroAddress;
- bzero(&zeroAddress, sizeof(zeroAddress));
- zeroAddress.sin_len = sizeof(zeroAddress);
- zeroAddress.sin_family = AF_INET;
- // Recover reachability flags
- SCNetworkReachabilityRef defaultRouteReachability = SCNetworkReachabilityCreateWithAddress(NULL, (struct sockaddr *)&zeroAddress);
- SCNetworkReachabilityFlags flags;
- BOOL didRetrieveFlags = SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags);
- CFRelease(defaultRouteReachability);
- if (!didRetrieveFlags)
- {
- printf("Error. Could not recover network reachability flags\n");
- return NO;
- }
- BOOL isReachable = ((flags & kSCNetworkFlagsReachable) != 0);
- BOOL needsConnection = ((flags & kSCNetworkFlagsConnectionRequired) != 0);
- return (isReachable && !needsConnection) ? YES : NO;
- }
- // Direct from Apple. Thank you Apple
- + (BOOL)addressFromString:(NSString *)IPAddress address:(struct sockaddr_in *)address
- {
- if (!IPAddress || ![IPAddress length]) return NO;
- memset((char *) address, sizeof(struct sockaddr_in), 0);
- address->sin_family = AF_INET;
- address->sin_len = sizeof(struct sockaddr_in);
- int conversionResult = inet_aton([IPAddress UTF8String], &address->sin_addr);
- if (conversionResult == 0) {
- NSAssert1(conversionResult != 1, @"Failed to convert the IP address string into a sockaddr_in: %@", IPAddress);
- return NO;
- }
- return YES;
- }
- + (NSString *) getIPAddressForHost: (NSString *) theHost
- {
- theHost=[theHost substringFromIndex:7];
- //NSLog(@"%@",theHost);
- struct hostent *host = gethostbyname([theHost UTF8String]);
- if (!host) {herror("resolv"); return NULL; }
- struct in_addr **list = (struct in_addr **)host->h_addr_list;
- NSString *addressString = [NSString stringWithCString:inet_ntoa(*list[0]) encoding:NSUTF8StringEncoding];
- return addressString;
- }
- + (BOOL) hostAvailable: (NSString *) theHost
- {
- NSString *addressString = [self getIPAddressForHost:theHost];
- if (!addressString)
- {
- printf("Error recovering IP address from host name\n");
- return NO;
- }
- struct sockaddr_in address;
- BOOL gotAddress = [self addressFromString:addressString address:&address];
- if (!gotAddress)
- {
- printf("Error recovering sockaddr address from %s\n", [addressString UTF8String]);
- return NO;
- }
- SCNetworkReachabilityRef defaultRouteReachability = SCNetworkReachabilityCreateWithAddress(NULL, (struct sockaddr *)&address);
- SCNetworkReachabilityFlags flags;
- BOOL didRetrieveFlags =SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags);
- CFRelease(defaultRouteReachability);
- if (!didRetrieveFlags)
- {
- printf("Error. Could not recover network reachability flags\n");
- return NO;
- }
- BOOL isReachable = flags & kSCNetworkFlagsReachable;
- return isReachable ? YES : NO;;
- }
- //通过区分字符串
- +(BOOL)validateEmail:(NSString*)email
- {
- if((0 != [email rangeOfString:@"@"].length) &&
- (0 != [email rangeOfString:@"."].length))
- {
- NSCharacterSet* tmpInvalidCharSet = [[NSCharacterSet alphanumericCharacterSet] invertedSet];
- NSMutableCharacterSet* tmpInvalidMutableCharSet = [[tmpInvalidCharSet mutableCopy] autorelease];
- [tmpInvalidMutableCharSet removeCharactersInString:@"_-"];
- NSRange range1 = [email rangeOfString:@"@"
- options:NSCaseInsensitiveSearch];
- //取得用户名部分
- NSString* userNameString = [email substringToIndex:range1.location];
- NSArray* userNameArray = [userNameString componentsSeparatedByString:@"."];
- for(NSString* string in userNameArray)
- {
- NSRange rangeOfInavlidChars = [string rangeOfCharacterFromSet: tmpInvalidMutableCharSet];
- if(rangeOfInavlidChars.length != 0 || [string isEqualToString:@""])
- return NO;
- }
- //取得域名部分
- NSString *domainString = [email substringFromIndex:range1.location+1];
- NSArray *domainArray = [domainString componentsSeparatedByString:@"."];
- for(NSString *string in domainArray)
- {
- NSRange rangeOfInavlidChars=[string rangeOfCharacterFromSet:tmpInvalidMutableCharSet];
- if(rangeOfInavlidChars.length !=0 || [string isEqualToString:@""])
- return NO;
- }
- return YES;
- }
- else {
- return NO;
- }
- }
- //利用正则表达式验证
- +(BOOL)isValidateEmail:(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];
- }
- +(BOOL)isValidateString:(NSString *)myString
- {
- NSCharacterSet *nameCharacters = [[NSCharacterSet characterSetWithCharactersInString:@"_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"] invertedSet];
- NSRange userNameRange = [myString rangeOfCharacterFromSet:nameCharacters];
- if (userNameRange.location != NSNotFound) {
- //NSLog(@"包含特殊字符");
- return FALSE;
- }else{
- return TRUE;
- }
- }
ios 常用工具类
最新推荐文章于 2022-07-28 09:54:58 发布