NSString常用的分类方法

NSString常用的分类方法做一个简单的总结不定时更新

category我已经做了封装上传到了GitHub如果有需要的可以直接使用
传送门

1.判断手机号

1
2
3
4
5
6
7
-(BOOL)wj_isVAlidPhoneNumber
{
NSString *regex = @"^(13|15|17|18|14)\\d{9}$";
NSPredicate * pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex];
BOOL isMatch =[pred evaluateWithObject:self];
return isMatch;
}

2.判断邮箱

1
2
3
4
5
6
-(BOOL)wj_isValidEmail
{
NSString *regex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
NSPredicate *emailTestPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
return [emailTestPredicate evaluateWithObject:self];
}

3.判断是否是URL

1
2
3
4
5
6
-(BOOL)wj_isValidUrl
{
NSString *regex =@"[a-zA-z]+://[^\\s]*";
NSPredicate *urlTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex];
return [urlTest evaluateWithObject:self];
}

4.判断是否是空字符

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
- (BOOL)wj_isBlankString{
if (!self) {
return YES;
}
if ([self isKindOfClass:[NSNull class]]) {
return YES;
}
if (!self.length) {
return YES;
}
NSCharacterSet *set = [NSCharacterSet whitespaceAndNewlineCharacterSet];
NSString *trimmedStr = [self stringByTrimmingCharactersInSet:set];
if (!trimmedStr.length) {
return YES;
}
return NO;
}

5.判断密码是否是6-18位并且含数字跟字母

1
2
3
4
5
-(BOOL)wj_isPassword {
NSString * regex = @"^[A-Za-z0-9_]{6,18}$";
NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
return [pred evaluateWithObject:self];
}

6.字符串转NSData

1
2
3
4
-(NSData *)wj_convertToData
{
return [self dataUsingEncoding:NSUTF8StringEncoding];
}

7.NSData转字符串

1
2
3
4
+(NSString *)wj_getStringFromData:(NSData *)data
{
return [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
}

8.时间戳转时间

1
2
3
-(NSDate *)wj_dateValueWithMillisecondsSince1970 {
return [NSDate dateWithTimeIntervalSince1970:[self doubleValue] / 1000];
}

9.计算属性字符文本占用的宽高

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
   @param font    显示的字体
@param maxSize 最大的显示范围
@param lineSpacing 行间距
@return 占用的宽高
-(CGSize)wj_attrStrSizeWithFont:(UIFont *)font andmaxSize:(CGSize)maxSize lineSpacing:(CGFloat)lineSpacing{
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
[paragraphStyle setLineSpacing:lineSpacing];
NSDictionary *dict = @{NSFontAttributeName: font,
NSParagraphStyleAttributeName: paragraphStyle};
CGSize sizeToFit = [self boundingRectWithSize:maxSize // 用于计算文本绘制时占据的矩形块
options:NSStringDrawingTruncatesLastVisibleLine |NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading // 文本绘制时的附加选项
attributes:dict // 文字的属性
context:nil].size; // context上下文。包括一些信息,例如如何调整字间距以及缩放。该对象包含的信息将用于文本绘制。该参数可为nil
return sizeToFit;
}

10.获取系统版本号

1
2
3
4
5
6
+(NSString *)wj_getMyApplicationVersion
{
NSDictionary *info = [[NSBundle mainBundle] infoDictionary];
NSString *shortVersion = [info objectForKey:@"CFBundleShortVersionString"];
return [NSString stringWithFormat:@"%@", shortVersion];
}

11. 获取APP的名字

1
2
3
4
5
6
7
+(NSString *)wj_getMyApplicationName
{
NSDictionary *info = [[NSBundle mainBundle] infoDictionary];
// NSString *name = [info objectForKey:@"CFBundleDisplayName"];
// return [NSString stringWithFormat:@"%@", name];
return [info objectForKey:@"CFBundleDisplayName"];
}

12.获取手机名称

1
2
3
4
+(NSString *)wj_getMyPhoneName
{
return [[UIDevice currentDevice] name];
}

13. 获取设备名称

1
2
3
4
+(NSString *)wj_getMyDeviceName
{
return [[UIDevice currentDevice] systemName];
}