1.计算字符串宽度
/**
@param str 字符串
@param font 字体
@param height 高度
@return 宽度*/
- (CGFloat)widthOfString:(NSString*)strandFont:(UIFont*)fontandHeight:(CGFloat)height{
return [str boundingRectWithSize:CGSizeMake(CGFLOAT_MAX, height) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName:font} context:nil].size.width;
}
2. 计算字符串的高度
@param str 字符串
@param font 字体
@param width 宽度
@return 高度
*/
- (CGFloat)heightOfString:(NSString*)strandFont:(UIFont*)fontandWidth:(CGFloat)width{
return [str boundingRectWithSize:CGSizeMake(width, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName:font} context:nil].size.height;
}
3.校验字符串是否是网址
+ (BOOL)isUrlString:(NSString*)string {
NSString*emailRegex =@"[a-zA-z]+://.*";
NSPredicate*emailTest = [NSPredicatepredicateWithFormat:@"SELF MATCHES %@", emailRegex];
return[emailTestevaluateWithObject:string];
}
4.字符串MD5加密
- (NSString *)stringToMD5:(NSString *)str
{
//1.首先将字符串转换成UTF-8编码, 因为MD5加密是基于C语言的,所以要先把字符串转化成C语言的字符串
constchar*fooData = [strUTF8String];
//2.然后创建一个字符串数组,接收MD5的值
unsigned char result[CC_MD5_DIGEST_LENGTH];
//3.计算MD5的值, 这是官方封装好的加密方法:把我们输入的字符串转换成16进制的32位数,然后存储到result中
CC_MD5(fooData, (CC_LONG)strlen(fooData), result);
/**
第一个参数:要加密的字符串
第二个参数: 获取要加密字符串的长度
第三个参数: 接收结果的数组
*/
//4.创建一个字符串保存加密结果
NSMutableString *saveResult = [NSMutableString string];
//5.从result 数组中获取加密结果并放到 saveResult中
for(inti =0; i
[saveResultappendFormat:@"%02x", result[i]];
}
/*
x表示十六进制,%02X 意思是不足两位将用0补齐,如果多余两位则不影响
NSLog("%02X", 0x888); //888
NSLog("%02X", 0x4); //04
*/
returnsaveResult;
}
5.字典转JSON字符串
- (NSString *)jsonStringOriWithDict:(NSDictionary *)dict{
NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dict options:NSJSONWritingPrettyPrinted error:&error];
NSString *jsonString;
if (!jsonData) {
NSLog(@"%@",error);
}else{
jsonString = [[NSString alloc]initWithData:jsonData encoding:NSUTF8StringEncoding];
}
return jsonString;
}