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

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 = ;
NSString *result;
NSLog(@"timeInterval:%f ",timeInterval);
if (timeInterval < ) {
result = [NSString stringWithFormat:@"刚刚"];
}
else if((temp = timeInterval/) <){
result = [NSString stringWithFormat:@"%ld分前",temp];
}
else if((temp = temp/) <){
result = [NSString stringWithFormat:@"%ld小前",temp];
}
else if((temp = temp/) <){ result = [NSString stringWithFormat:@"%ld天前",temp];
}
else if((temp = temp/) <){
result = [NSString stringWithFormat:@"%ld月前",temp];
}
else{
temp = temp/;
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 & 0xFF
hexstr = [hexstr stringByAppendingFormat:@"%@",[NSString stringWithFormat:@"0x%X ",[text UTF8String][i] & 0xFF ]];
}
return hexstr;
}

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

//字符串文字显示两种颜色
+(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会成红色

iOS 关于NSString的一些方法的更多相关文章

  1. ios开发中object-c中UTF-8 和 GBK 的 NSString 相互转化的方法

    应用都要遇到一个很头疼的问题:文字编码,汉字的 GBK 和 国际通用的 UTF-8 的互相转化稍一不慎, 就会满屏乱码.下面介绍 UTF-8 和 GBK 的 NSString 相互转化的方法   NS ...

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

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

  3. IOS 获取最新设备型号方法

    1.IOS 获取最新设备型号方法列表最新对照表:http://theiphonewiki.com/wiki/Models方法: #import "sys/utsname.h” struct ...

  4. C#/IOS/Android通用加密解密方法

    原文:C#/IOS/Android通用加密解密方法 公司在做移动端ios/android,服务器提供接口使用的.net,用到加密解密这一块,也在网上找了一些方法,有些是.net加密了android解密 ...

  5. ios中NSUserDefaults的使用方法

    ios中NSUserDefaults的使用方法 NSUserDefaults类提供了一个与默认系统进行交互的编程接口.NSUserDefaults对象是用来保存.恢复应用程序相关的偏好设置,配置数据等 ...

  6. 【iOS】NSString rangeOfString

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

  7. iOS AFNetworking内存泄漏处理方法

    iOS AFN内存泄漏处理方法 细心的你是否也发现AFN的内存泄漏的问题了呢. 在这里给大家提供一个解决AFN内存泄漏的方法. 单例解决AFN内存泄漏 + (AFHTTPSessionManager ...

  8. js 与ios 交互的三种方法

    第一种:IOS拦截url  实现跳转 参考链接:http://www.cnblogs.com/pengyingh/articles/2354381.html IOS9.0 及以上支持 第二种:IOS ...

  9. 李洪强iOS开发Swift篇—10_方法

    李洪强iOS开发Swift篇—10_方法 一.简单说明 跟其他面向对象语言一样,Swift中的方法可以分为2大类: (1)实例方法(Instance Methods) 在OC中,实例方法以减号(-)开 ...

随机推荐

  1. python简单网络服务器

    对于服务器来说建立TCP连接的过程分为4步: 1.建立socket对象:这里与客户端一样,依然是: s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) ...

  2. Codeforces 588E. A Simple Task (线段树+计数排序思想)

    题目链接:http://codeforces.com/contest/558/problem/E 题意:有一串字符串,有两个操作:1操作是将l到r的字符串升序排序,0操作是降序排序. 题解:建立26棵 ...

  3. 编译安装-MySQL5.5

    一.参数选项 1.目录选项 2.存储引擎选项 3.库文件加载选项 二.安装 1.环境准备 2.安装前的系统设置 3.安装执行 4.初始化数据库 5.注册为服务 6.加入环境变量 7.启动服务 8.重新 ...

  4. 编译ffmpeg(iOS)

    一,x264库的编译 首先到http://www.videolan.org/developers/x264.html下载x264的库,然后解压,修改文件夹名称为x264     二,下载ffmpeg2 ...

  5. 开源文件比较工具:WinMerge、KDiff3、diffuse

    为了寻找免费的BeyondCompare的替代品,最后经过实用,找到如下一些: 1.diffuse 感受:如果仅仅是比较两个文本类的文件,这个软件也就够用了. 安装好后,对着文件点击右键,会出现“Op ...

  6. Web服务器与Web系统发布

    在讨论Web系统发布之前,我们先来辨析两个概念:服务器.Web服务器. 通常,我们说的服务器,是一台提供服务的计算机,是硬件概念.这台主机有其IP地址,有服务端口,我们要访问时,就是通过IP地址唯一地 ...

  7. Linux 中使用 KVM

    from:http://www.php-oa.com/2010/02/22/ubutnu-kvm-vmware.html 听讲XEN很快就要从LINUX内核中去掉,redhat和Ubuntu也大力的在 ...

  8. ThinkSNS插件的使用方法

    1.插件包放到/addons/plugin/ 目录下. 2.自定义一个插件钩子:修改/apps/public/Tpl/default/Index/index.html,约在65行左右,添加下面钩子.{ ...

  9. XPath具体解释

    New Document 相关读书笔记.心得文章列表 一.结点类型 XPath中有七种结点类型:元素.属性.文本.命名空间.处理指令.凝视以及文档节点(或成为根节点). 文档的根节点即是文档结点:相应 ...

  10. loading-show-hide

    https://github.com/eltld/loading-show-hide