本文介绍了常用的一些分类.
一.UIColor分类(十六进制转颜色)
/**
十六进制转颜色
@param hexStr 十六进制字符串
@return 颜色对象
*/
+ (instancetype)colorWithHexStr:(NSString *)hexStr
{
if ([hexStr hasPrefix:@"#"])
{
hexStr = [hexStr stringByReplacingCharactersInRange:NSMakeRange(0, 1) withString:@""];
}
NSInteger redColorNum = strtoul([[hexStr substringWithRange:NSMakeRange(0, 2)] UTF8String],0,16);
NSInteger greenColorNum = strtoul([[hexStr substringWithRange:NSMakeRange(2, 2)] UTF8String],0,16);
NSInteger blueColorNum = strtoul([[hexStr substringWithRange:NSMakeRange(4, 2)] UTF8String],0,16);
UIColor *color = BYColor(redColorNum, greenColorNum, blueColorNum);
return color;
}
二.UITextField分类(手机账号和密码验证)
- (BOOL)isEmptyText
{
return self.text.length == 0;
}
/*
中国移动:
135、136、137、138、139、147(数据卡)、148、150、151、152、157、158、159、178、182、183、184、187、188、198、
134(0-8)、1440、1703、1705、1706
中国联通:
130、131、132、145(数据卡)、146、155、156、166、175、176、185、186、
1707、1708、1709 、
中国电信:
133、149、153、173、177、180、181、189、199、
1349、1410、1700、1701、1702、
虛拟运营商: 1700、1705、1707、1708、1709......代理联通移动电信业务
*/
// 判断手机号码格式是否正确
- (BOOL)isValidPhoneNumber
{
// phoneNumber = [phoneNumber stringByReplacingOccurrencesOfString:@" " withString:@""];
if (self.text.length != 11)
{
return NO;
}
else
{
/**
* 移动号段正则表达式
* CM China Mobile
*/
NSString *CMPhoneSegmentRegExp = @"^1((3[5-9])|(4[7-8])|(5[0-2,7-9])|(78)|(8[2-4,7-8])|(98))\\d{8}|((34[0-8])|(440)|(70[3,5-6]))\\d{7}$";
/**
* 联通号段正则表达式
* CU China Unicom
*/
NSString *CUPhoneSegmentRegExp = @"^1((13[0-2])|(4[5-6])|(5[5-6])|(66])|(7[5-6])|(8[5,6]))\\d{8}|(70[7-9])\\d{7}$";
/**
* 电信号段正则表达式
* CT China Telecom
*/
NSString *CTPhoneSegmentRegExp = @"^1((33)|(49)|(53)|(17[3-7])|(18[0,1,9])|(99))\\d{8}((349)|(410)|(70[0-2]))\\d{7}$";
NSPredicate *predicateCM = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CMPhoneSegmentRegExp];
BOOL isMatchCM = [predicateCM evaluateWithObject:self.text];
NSPredicate *predicateCU = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CUPhoneSegmentRegExp];
BOOL isMatchCU = [predicateCU evaluateWithObject:self.text];
NSPredicate *predicateCT = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CTPhoneSegmentRegExp];
BOOL isMatchCT = [predicateCT evaluateWithObject:self.text];
if (isMatchCM || isMatchCU || isMatchCT)
{
return YES;
}
else
{
return NO;
}
}
}
// 判断秘密格式为 6 - 18 位数字和字母组成
- (BOOL)isValidPassword
{
NSString *regExp = @"^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,18}$";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regExp];
if ([predicate evaluateWithObject:self.text])
{
return YES ;
}
else
{
return NO;
}
}
// 长度是否超过6位数并小于18位数
- (BOOL)isMoreThanSixLength
{
return (self.text.length >= 6 && self.text.length <= 18);
}
三.NSString分类(缓存路径)
// 获取Documents目录
+ (NSString *)documentPath
{
return [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
}
// 获取Cache目录
+ (NSString *)cachePath
{
return [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
}
// 获取Tmp目录
+ (NSString *)tempPath
{
return NSTemporaryDirectory();
}
// 获取拼接后的Documents目录
- (NSString *)appendDocumentsPath
{
NSString *documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *fileName = [self lastPathComponent];
NSString *filePath = [documentsPath stringByAppendingPathComponent:fileName];
return filePath;
}
// 获取拼接后的Cache目录
- (NSString *)appendCachePath
{
NSString *cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
NSString *fileName = [self lastPathComponent];
NSString *filePath = [cachePath stringByAppendingPathComponent:fileName];
return filePath;
}
// 获取拼接后的Tmp目录
- (NSString *)appendTmpPath
{
NSString *tmpPath = NSTemporaryDirectory();
NSString *fileName = [self lastPathComponent];
NSString *filePath = [tmpPath stringByAppendingPathComponent:fileName];
return filePath;
}
后续再更...
网友评论