NSString.h
/**
* 设置段落样式
*
* @param lineSpacing 行高
* @param textcolor 字体颜色
* @param font 字体
*
* @return 富文本
*/
- (NSAttributedString *)stringWithParagraphlineSpeace:(CGFloat)lineSpacing
textColor:(UIColor *)textcolor
textFont:(UIFont *)font;
/**
* 计算富文本字体高度
*
* @param lineSpeace 行高
* @param font 字体
* @param width 字体所占宽度
*
* @return 富文本高度
*/
- (CGFloat)getSpaceLabelHeightwithSpeace:(CGFloat)lineSpeace withFont:(UIFont*)font withWidth:(CGFloat)width;
/**
* 设置在一个文本中所有特殊字符的特殊颜色
* @pragma allStr 所有字符串
* @pragma specifiStr 特殊字符
* @pragma color 默认特殊字符颜色 红色
* @pragma font 默认字体 systemFont 17.号字
**/
+ (NSMutableAttributedString *)setAllText:(NSString *)allStr andSpcifiStr:(NSString *)specifiStr;
+ (NSMutableAttributedString *)setAllText:(NSString *)allStr andSpcifiStr:(NSString *)specifiStr withColor:(UIColor *)color specifiStrFont:(UIFont *)font;
/**
* 16位颜色色值处理
*/
+ (UIColor *)colorWithHexString:(NSString *)color alpha:(CGFloat)alpha;
+ (UIColor *)colorWithHexString:(NSString *)color;
//获取有效小数
+ (NSString*)getTheCorrectNum:(NSString*)tempString;
/**
* MD5加密
*/
- (NSString *)stringFromMD5;
================================================================================================================================
NSString.m
/**
* 设置段落样式
*
* @param lineSpacing 行高
* @param textcolor 字体颜色
* @param font 字体
*
* @return 富文本
*/
- (NSAttributedString *)stringWithParagraphlineSpeace:(CGFloat)lineSpacing
textColor:(UIColor *)textcolor
textFont:(UIFont *)font {
// 设置段落
NSMutableParagraphStyle * paragraphStyle = [[NSMutableParagraphStylealloc] init];
paragraphStyle.lineSpacing = lineSpacing;
// NSKernAttributeName字体间距
NSDictionary *attributes =@{ NSParagraphStyleAttributeName:paragraphStyle};
NSMutableAttributedString * attriStr = [[NSMutableAttributedStringalloc] initWithString:selfattributes:attributes];
// 创建文字属性
NSDictionary * attriBute =@{NSForegroundColorAttributeName:textcolor,NSFontAttributeName:font};
[attriStr addAttributes:attriButerange:NSMakeRange(0,self.length)];
return attriStr;
}
/**
* 计算富文本字体高度
*
* @param lineSpeace 行高
* @param font 字体
* @param width 字体所占宽度
*
* @return 富文本高度
*/
- (CGFloat)getSpaceLabelHeightwithSpeace:(CGFloat)lineSpeace withFont:(UIFont*)font withWidth:(CGFloat)width {
NSMutableParagraphStyle *paraStyle = [[NSMutableParagraphStylealloc] init];
// paraStyle.lineBreakMode = NSLineBreakByCharWrapping;
/** 行高 */
paraStyle.lineSpacing = lineSpeace;
// NSKernAttributeName字体间距
NSDictionary *dic =@{NSFontAttributeName:font,NSParagraphStyleAttributeName:paraStyle};
CGSize size = [selfboundingRectWithSize:CGSizeMake(width,MAXFLOAT)options:NSStringDrawingUsesLineFragmentOriginattributes:dic context:nil].size;
return size.height;
}
#pragma mark -- 设置在一个文本中所有特殊字符的特殊颜色
+ (NSMutableAttributedString *)setAllText:(NSString *)allStr andSpcifiStr:(NSString *)specifiStr withColor:(UIColor *)color specifiStrFont:(UIFont *)font {
NSMutableAttributedString *mutableAttributedStr = [[NSMutableAttributedStringalloc] initWithString:allStr];
if (color ==nil) {
color = [UIColorredColor];
}
if (font ==nil) {
font = [UIFontsystemFontOfSize:17.];
}
// NSArray *array = [allStr componentsSeparatedByString:specifiStr];//array.cout-1是所有字符特殊字符出现的次数
NSRange searchRange =NSMakeRange(0, [allStrlength]);
NSRange range;
//拿到所有的相同字符的range
while ((range = [allStrrangeOfString:specifiStroptions:0range:searchRange]).location !=NSNotFound) {
//改变多次搜索时searchRange的位置
searchRange = NSMakeRange(NSMaxRange(range), [allStrlength] - NSMaxRange(range));
//设置富文本
[mutableAttributedStr addAttribute:NSForegroundColorAttributeNamevalue:color range:range];
[mutableAttributedStr addAttribute:NSFontAttributeNamevalue:font range:range];
}
return mutableAttributedStr;
}
+ (NSMutableAttributedString *)setAllText:(NSString *)allStr andSpcifiStr:(NSString *)specifiStr {
return [selfsetAllText:allStr andSpcifiStr:specifiStr withColor:nilspecifiStrFont:nil];
}
+ (UIColor *)colorWithHexString:(NSString *)color alpha:(CGFloat)alpha {
//删除字符串中的空格
NSString *cString = [[colorstringByTrimmingCharactersInSet:[NSCharacterSetwhitespaceAndNewlineCharacterSet]]uppercaseString];
// String should be 6 or 8 characters
if ([cStringlength] < 6) {
return [UIColorclearColor];
}
// strip 0X if it appears
//如果是0x开头的,那么截取字符串,字符串从索引为2的位置开始,一直到末尾
if ([cStringhasPrefix:@"0X"]) {
cString = [cString substringFromIndex:2];
}
//如果是#开头的,那么截取字符串,字符串从索引为1的位置开始,一直到末尾
if ([cStringhasPrefix:@"#"]) {
cString = [cString substringFromIndex:1];
}
if ([cStringlength] != 6) {
return [UIColorclearColor];
}
// Separate into r, g, b substrings
NSRange range;
range.location =0;
range.length =2;
//r
NSString *rString = [cStringsubstringWithRange:range];
//g
range.location =2;
NSString *gString = [cStringsubstringWithRange:range];
//b
range.location =4;
NSString *bString = [cStringsubstringWithRange:range];
// Scan values
unsignedint r, g, b;
[[NSScannerscannerWithString:rString]scanHexInt:&r];
[[NSScannerscannerWithString:gString]scanHexInt:&g];
[[NSScannerscannerWithString:bString]scanHexInt:&b];
return [UIColorcolorWithRed:((float)r /255.0f) green:((float)g /255.0f) blue:((float)b /255.0f) alpha:alpha];
}
//默认alpha值为1
+ (UIColor *)colorWithHexString:(NSString *)color {
return [selfcolorWithHexString:coloralpha:1.0f];
}
/*
* 处理一个数字加小数点的字符串,前面无0,保留两位。网上有循环截取的方法,如果数字过长,浪费内存,这个方法在优化内存的基础上设计的。
*/
+ (NSString*)getTheCorrectNum:(NSString*)tempString {
//先判断第一位是不是 . ,是 .补0
if ([tempStringhasPrefix:@"."]) {
tempString = [NSStringstringWithFormat:@"0%@",tempString];
}
//计算截取的长度
NSUInteger endLength = tempString.length;
//判断字符串是否包含 .
if ([tempStringcontainsString:@"."]) {
//取得 .的位置
NSRange pointRange = [tempStringrangeOfString:@"."];
//判断 .后面有几位
NSUInteger f = tempString.length -1 - pointRange.location;
//如果大于2位就截取字符串保留两位,如果小于两位,直接截取
if (f >2) {
endLength = pointRange.location +2;
}
}
//先将tempString转换成char型数组
NSUInteger start =0;
constchar *tempChar = [tempStringUTF8String];
//遍历,去除取得第一位不是0的位置
for (int i =0; i < tempString.length; i++) {
if (tempChar[i] =='0') {
start++;
}else {
break;
}
}
//如果第一个字母为 . start后退一位
if (tempChar[start] =='.') {
start--;
}
//根据最终的开始位置,计算长度,并截取
NSRange range = {start,endLength - start};
tempString = [tempString substringWithRange:range];
return tempString;
}
- (NSString *)stringFromMD5 {
if(self ==nil || [selflength] == 0)
returnnil;
constchar *value = [selfUTF8String];
unsignedchar outputBuffer[CC_MD5_DIGEST_LENGTH];
CC_MD5(value, (int)strlen(value), outputBuffer);
NSMutableString *outputString = [[NSMutableStringalloc] initWithCapacity:CC_MD5_DIGEST_LENGTH *2];
for(NSInteger count =0; count < CC_MD5_DIGEST_LENGTH; count++){
[outputString appendFormat:@"%02x",outputBuffer[count]];
}
returnSAFE_AUTORELEASE(outputString);
}