NSString+ZCHelp.m 2.7 KB
Newer Older
zhukai committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
//
//  NSString+ZCHelp.m
//  UniversalApp
//
//  Created by 凯朱 on 2019/6/1.
//  Copyright © 2019 徐阳. All rights reserved.
//

#import "NSString+ZCHelp.h"

@implementation NSString (ZCHelp)
/**
 日期转成日期字符串 代替方法 +(NSString *)dateStringFromDate:(NSDate *)date formatStr:(NSString *)fomatterStr
 
 @param date 日期
 @param formatStr 格式
 @return 日期字符串
 */
+(NSString *)dateStrFromDate:(NSDate *)date formatStr:(NSString *)formatStr
{
    NSDateFormatter *format = [[NSDateFormatter alloc] init];
    [format setDateFormat:formatStr];
    NSString *dateStr =  [format stringFromDate:date];
    return dateStr;
}

/**
 计算富文本高度
 
 @param width 宽度
 @param font 字体大小
 @param lineSpace 行距
 @return 文本高度
 */
-(CGFloat)countHeightWithWidth:(CGFloat)width font:(UIFont *)font lineSpace:(CGFloat)lineSpace {
   
    NSMutableAttributedString *text = [[NSMutableAttributedString alloc] initWithString:self];
    text.font = font;
    text.lineSpacing = lineSpace;
    
    NSMutableParagraphStyle  *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
    paragraphStyle.lineBreakMode = NSLineBreakByCharWrapping;
    paragraphStyle.lineSpacing = lineSpace;
    text.paragraphStyle = paragraphStyle;
    
    CGSize maxSize = CGSizeMake(width, MAXFLOAT);
    YYTextLayout *layout = [YYTextLayout layoutWithContainerSize:maxSize text:text];
    CGFloat reHeight = layout.textBoundingRect.size.height;
    CGFloat siHeight = layout.textBoundingSize.height;
    //这里可能存在四舍五入时候去掉尾数的情况
    if (siHeight - reHeight < 0) {
        return siHeight + 1;
    }
    return siHeight;
}

/**
 任何对象转字符串 代替以下方法

 @param obj 对象
 @return 字符串
 */
+(NSString *)valueToString:(id)obj{
    
    if ([obj isEqual:nil]) {
        return [NSString string];
    }
    
    if ([obj isEqual:[NSNull null]]) {
        return [NSString string];
    }
    
    if ([obj isKindOfClass:[NSString class]]) {
        return obj;
    }
    
    if ([obj isKindOfClass:[NSNumber class]]) {
        return [NSString stringWithFormat:@"%@", obj];
    }
    
    return [NSString string];
}

#pragma 正则匹配手机号
-(BOOL)isTelNumber
{
    if (self.length == 0) {
        return NO;
    }
    NSString *pattern = @"^1+[3578]+\\d{9}";
    NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", pattern];
    BOOL isMatch = [pred evaluateWithObject:self];
    return isMatch;
}

/**
 是6位数字
 */
-(BOOL)isSixNumber{
   
    NSString *pattern = @"^[0-9]{6}$";
    NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", pattern];
    BOOL isMatch = [pred evaluateWithObject:self];
    return isMatch;
}

@end