在项目中整理的一些关于字符串应用方法,可以全部封装在一个类里面进行调用,会不断更新添加:

1.数字转换成对应的中文数字(项目中课程分级目录的章节号用到)

摘自:http://blog.csdn.net/it_ds/article/details/47128563

+(NSString *)translation:(NSString *)arebic
{   NSString *str = arebic;NSArray *arabic_numerals = @[@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"0"];NSArray *chinese_numerals = @[@"一",@"二",@"三",@"四",@"五",@"六",@"七",@"八",@"九",@"零"];NSArray *digits = @[@"个",@"十",@"百",@"千",@"万",@"十",@"百",@"千",@"亿",@"十",@"百",@"千",@"兆"];NSDictionary *dictionary = [NSDictionary dictionaryWithObjects:chinese_numerals forKeys:arabic_numerals];NSMutableArray *sums = [NSMutableArray array];for (int i = 0; i < str.length; i ++) {NSString *substr = [str substringWithRange:NSMakeRange(i, 1)];NSString *a = [dictionary objectForKey:substr];NSString *b = digits[str.length -i-1];NSString *sum = [a stringByAppendingString:b];if ([a isEqualToString:chinese_numerals[9]]){if([b isEqualToString:digits[4]] || [b isEqualToString:digits[8]]){sum = b;if ([[sums lastObject] isEqualToString:chinese_numerals[9]]){[sums removeLastObject];}}else{sum = chinese_numerals[9];}if ([[sums lastObject] isEqualToString:sum]){continue;}}[sums addObject:sum];}NSString *sumStr = [sums  componentsJoinedByString:@""];NSString *chinese = [sumStr substringToIndex:sumStr.length-1];NSLog(@"%@",str);NSLog(@"%@",chinese);return chinese;
}

2.判断是否含有中文(视频网址判断是否需要转码)

+(BOOL)isChinese:(NSString *)str{for (int i=0; i<str.length; ++i){NSRange range = NSMakeRange(i, 1);NSString *subString = [str substringWithRange:range];const char *cString = [subString UTF8String];if (strlen(cString) == 3){return YES;}}return NO;
}

3.去除特殊字符(去除时间戳中的”/“时用到)

+(NSString *) stringDeleteString:(NSString *)str
{NSMutableString *str1 = [NSMutableString stringWithString:str];for (int i = 0; i < str1.length; i++) {unichar c = [str1 characterAtIndex:i];NSRange range = NSMakeRange(i, 1);if ( c == '/' || c == '-' || c == '.' || c == ',' || c == '(' || c == ')') { //此处可以是任何字符[str1 deleteCharactersInRange:range];--i;}}NSString *newstr = [NSString stringWithString:str1];return newstr;
}

4.特殊字符转义(textView往接口传入含”&“的内容不能成功 因为接口参数以”&“开头 解决方式是移动端将输入内容先转义 然后后台再转一次)

+(NSString *)replaceMyString:(NSString *)textStr{//    NSString *inputString = [[NSString alloc]init];NSString *inputString = textStr;//inputString = [inputString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];inputString = [inputString stringByReplacingOccurrencesOfString:@"&" withString:@"&"];inputString = [inputString stringByReplacingOccurrencesOfString:@"<" withString:@"<"];inputString = [inputString stringByReplacingOccurrencesOfString:@">" withString:@">"];inputString = [inputString stringByReplacingOccurrencesOfString:@" " withString:@" "];inputString = [inputString stringByReplacingOccurrencesOfString:@"\'" withString:@"'"];inputString = [inputString stringByReplacingOccurrencesOfString:@"\"" withString:@"""];inputString = [inputString stringByReplacingOccurrencesOfString:@"\r" withString:@""];inputString = [inputString stringByReplacingOccurrencesOfString:@"\n" withString:@"<br />"];return inputString;
}

5.将秒数转换成时、分(接口返回的时长都是秒单位 如3600 需要转成小时和分钟的样式时用到)

//修改时分的方法
+(NSString *)TimeformatFromSeconds:(int)seconds
{if (seconds > 60 ) {NSString *str_hour = [NSString stringWithFormat:@"%d",seconds/3600];NSString *str_minute = [NSString stringWithFormat:@"%d",(seconds%3600)/60];if([str_hour isEqualToString:@"0"] ){int minutInt = (seconds%3600)%60;if (minutInt != 0) {NSString *format_time = [NSString stringWithFormat:@"%d",[str_minute intValue]+1];return format_time;}else{NSString *format_time = [NSString stringWithFormat:@"%@",str_minute];return format_time;}}else{int minutInt = (seconds%3600)%60;if (minutInt != 0) {NSString *format_time = [NSString stringWithFormat:@"%@时%d",str_hour,[str_minute intValue]+1];return format_time;}else{NSString *format_time = [NSString stringWithFormat:@"%@时%@",str_hour,str_minute];return format_time;}}}else if(seconds == 0){return @"0";}else{return @"1";}
}

6.获取文件的大小(下载课程视频获取大小时用到)

//返回文件大小的方法+(NSString *)getFileSizeString:(CGFloat)size{    if (size>1024*1024*1024){        return [NSString stringWithFormat:@"%.1fG",size/1024/1024/1024];//大于1G,则转化成G单位的字符串    }    else if(size<1024*1024*1024&&size>=1024*1024)//大于1M,则转化成M单位的字符串    {        return [NSString stringWithFormat:@"%.1fM",size/1024/1024];    }    else if(size>=1024&&size<1024*1024) //不到1M,但是超过了1KB,则转化成KB单位    {        return [NSString stringWithFormat:@"%.1fK",size/1024];    }    else//剩下的都是小于1K的,则转化成B单位    {        return [NSString stringWithFormat:@"%.1fB",size];    }}

7.计算时间差(事前保存的时间与当前时间差 用于课程更新时间的显示)

+(NSString *)compareCurrentTime:(NSDate*)compareDate
{NSTimeInterval  timeInterval = [compareDate timeIntervalSinceNow];timeInterval = -timeInterval;long temp = 0;NSString *result;NSLog(@"timeInterval:%f ",timeInterval);if (timeInterval < 60) {result = [NSString stringWithFormat:@"刚刚"];}else if((temp = timeInterval/60) <60){result = [NSString stringWithFormat:@"%ld分前",temp];}else if((temp = temp/60) <24){result = [NSString stringWithFormat:@"%ld小前",temp];}else if((temp = temp/24) <30){result = [NSString stringWithFormat:@"%ld天前",temp];}else if((temp = temp/30) <12){result = [NSString stringWithFormat:@"%ld月前",temp];}else{temp = temp/12;result = [NSString stringWithFormat:@"%ld年前",temp];}return  result;}

8.字符串转进制 (给后台提交数据时有用到)

//字符串转16进制
+(NSString *)unicoStr:(NSString *)text
{NSString *hexstr = @"";for (int i=0;i< [text length];i++){hexstr = [hexstr stringByAppendingFormat:@"%@",[NSString stringWithFormat:@"0x%1X ",[text characterAtIndex:i]]];}return hexstr;
}
//字符串转8进制
+(NSString *)eightUnicoStr:(NSString *)text
{NSString *hexstr = @"";
//    int slen = strlen([text UTF8String]);for (int i = 0; i < text.length; i++){//fffffff0 去除前面六个F & 0xFFhexstr = [hexstr stringByAppendingFormat:@"%@",[NSString stringWithFormat:@"0x%X ",[text UTF8String][i] & 0xFF ]];}return hexstr;
}

8.字符串中的以另一种颜色标出个别文字,例如:已学:5分钟

//字符串文字显示两种颜色
+(NSMutableAttributedString *)stringTwoColor:(NSString *)allStr changeColorStr:(NSString *)changeColorStr
{NSMutableAttributedString *inteMutStr = [[NSMutableAttributedString alloc] initWithString:allStr];NSRange orangeRange = NSMakeRange([[inteMutStr string] rangeOfString:changeColorStr].location, [[inteMutStr string] rangeOfString:changeColorStr].length);[inteMutStr addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:orangeRange];return inteMutStr;
}
调用的例子:
UILabel *myLable = [[UILabel alloc]initWithFrame:CGRectMake(100, 100, 200, 30)];
[self.view addSubview:myLable];
NSString *numStr = @"4";
NSString *inteStr = [NSString stringWithFormat:@"已学:%@分",numStr];
[myLable setAttributedText:[self stringTwoColor:inteStr changeColorStr:numStr]];
运行程序查看lable的文字,其中数字4会成红色

转载于:https://www.cnblogs.com/wusang/p/5601733.html

iOS 关于NSString的一些方法相关推荐

  1. IOS开发-Nsstring中搜索方法rangeOfString

    NSString *str1 = @"can you \n speak English"; NSString *str = @"\n"; //在str1这个字符 ...

  2. iOS 高效开发-----实现description 方法 (续)

    在 "iOS 高效开发-----实现description 方法"这篇文章的最后,我留下了一个问题,就是,如果要给每个自定义的类覆写description方法和debugDescr ...

  3. IOS修改webView背景透明以及IOS调用前台js的方法

    工作上遇到IOS的webView中的H5页面需要透明以显示webView的背景颜色.用H5自身的透明度的css样式或者js控制背景颜色及透明度都打不到想要的效果,最后还是通过ios设置webView中 ...

  4. iOS开发中常用的方法

    iOS开发中常用的方法 系统弹窗: 过期方法: UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"确认报价" ...

  5. IOS多国语言Localize方法

    IOS多国语言Localize方法 摘要: 使用一系列的NSLocalizedString函数就是localize的本质.NSLocalizedString(NSString *key, NSStri ...

  6. iOS 显示SVG文件的方法

    iOS 显示SVG文件的方法 1. Swift iOS : 显示SVG文件的方法 SVG文件是矢量图标准之一,特点是可以缩放,并且可以用可以阅读的源代码的方式(而不是二进制)来存储图形信息.比如如下文 ...

  7. 【iOS】NSString rangeOfString

    今天遇到了 NSString 的 rangeOfString 方法,刚遇到的时候不知道什么作用, 网上找到了一篇文章,介绍得挺简洁,代码如下: NSString *str1 = @"can ...

  8. iOS MRC下的setter方法

    //属性声明 @property(nonatomic,strong) NSString *name;//对应方法 -(void)setName:(NSString *)name {if (_name! ...

  9. iOS 相机拍照声音消失方法

    iOS 相机拍照声音消失方法 通过在拍照的时候播放一个同拍照音频文件的一个反向音频,是两个音频的声波中和,从而达到无声具体如下: static SystemSoundID soundID = 0; i ...

最新文章

  1. node-express-1
  2. adb 连接某个wifi_一加7 Pro全局强制开启90Hz刷新率的办法(附ADB文件下载)
  3. CCRD_TOC_2008年第2期
  4. typescript tslint rules config
  5. 【深度学习系列】用PaddlePaddle和Tensorflow实现经典CNN网络AlexNet
  6. springMvc(实现HandlerMethodArgumentResolver)自定义参数解析器
  7. docker入门2---docker的初体验
  8. 获取MOSS页面中控件使用的样式(转)
  9. CSDN终端数据更新不同步?
  10. 信号与系统_严国志_第一章_绪论
  11. 常用 Peano 余项泰勒公式
  12. 免费在upic中设置OneDrive或Google Drive作为图床
  13. 教育教学微课题研究方案——实习调研论文
  14. 汽车充电桩检测设备TK4860C交流充电桩检定装置
  15. 莫名其妙出现各种syntax error的解决方案
  16. 前端面试不用怕!一分钟带你了解es6的解构赋值
  17. Canopen对象字典学习
  18. linux应用开发大杂烩(你不一定都知道的细枝末节)
  19. uniapp组件-uni-icons 图标
  20. windows虚拟主机控制面板哪个比较好用?

热门文章

  1. 超经典两万字,MySQL数据库快速入门。
  2. 用计算机的知识服务社会,科研育人案例-董立红
  3. Office 2010 体验系列之Outlook使用
  4. 二叉树节点为某一值的路径
  5. Shell中字符串反转的六大方法
  6. js等待5秒后执行_厦门同安首台智能垃圾分类回收柜机投用 扫二维码5秒后回收变现...
  7. qcow2镜像转换为iso_电子数据镜像格式的转换,以qcow2转raw为例
  8. java学习之流程控制
  9. Float Protocol将于5月7日至10日进行FLOAT代币创世发布
  10. Ethernity Chain将发布棒球球星Fernando Tatis Jr.系列NFT