黑马程序员----oc加强笔记----Foundation\NSString

来源:互联网 发布:淘宝开抢提醒 编辑:程序博客网 时间:2024/05/21 22:53

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

1、字符串的比较

               1)比较字符串大小

             字符串根据排列顺序的不同,会有大小的差异,如果我们要比较两个字符串的大小的话,可以使用compare方法。

compare 方法返回的结果有三种:

                  NSOrderedAscending,NSOrderedSame,NSOrderedDescending,

                      str > str2  NSOrderedDescending    1   

                      str<str2    NSOrderedAscending      -1

                      str==str2   NSOrderedSame

另外,在使用compare方法时可以添加参数来决定是否区分大小写,或者声明为比较字符串个数而不是字符值等比较条件 

                2)比较字符串大小,指定条件

                         如果要忽略大小写的话,可以在options里面加一个参数NSCaseInsensitiveSearch;具体如下NSComparisonResult result2 =[str1 compare:str2 options:NSCaseInsensitiveSearch]; 

                            常见的有3

                                   NSCaseInsensitiveSearch:不区分大小写字符。

                             NSLiteralSearch:进行完全比较,区分大小写。

                             (默认)NSNumericSearch:比较字符串的字符个数,而不是字符值。 

           代码及理解
int main(int argc, const char * argv[]) {    @autoreleasepool {        NSString *str1 = @"abc";   // a 97        NSString *str2 = @"abc";   // A 65                //取出每个字符的ASCII码值 ,比较ASCII码值大小        //compare方法比较大小        //compare 默认的区分大小写的        //compare 这个函数,不能增加条件        //        NSComparisonResult result = [str1 compare:str2];                //比较的时候,不区分大小写,参考字符的个数        NSComparisonResult result = [str1 compare:str2 options:NSCaseInsensitiveSearch|NSNumericSearch];        //        switch (result) {            case NSOrderedAscending:                NSLog(@"str1 < str2 升序");                break;                            case NSOrderedDescending:                NSLog(@"str1 > str2 降序");                break;                            case NSOrderedSame:                NSLog(@"str1 == str2 ");                break;                            default:                break;        NSString *str3 = [NSString stringWithFormat:@"Abc"];                //地址的比较        // "==" 不能够判断字符串是否相等的                //判断字符串内容真正是否相等,使用是        //isEqualToString:        //注意:他是区分大小写的                if ([str1 isEqualToString:str3]) {            NSLog(@"相等");        }else{                 NSLog(@"不相等");        }            }    return 0;}
2、NSString前后缀检查及搜索

                   1)判断字符串前缀 

                            检查字符串是否以另一个字符串开头

                           -(BOOL) hasPrefix: (NSString *) aString; 

        代码及理解:

    NSString *url = @"https://ios.itcast.cn";        //如何检测这个字符串是否是一个网址    //http://    https://    // 检测一个字符串的前缀是否以 http://  开头  或者 https:// 开头    // [str hasPrefix:@"要检测的内容"];        if([url hasPrefix:@"http://"]||[url hasPrefix:@"https://"]){                NSLog(@"是一个网址");    }else{                NSLog(@"这不是一个网址");    }    

               2)判断字符串后缀

                           判断字符串是否以另一个字符串结尾

                           -(BOOL) hasSuffix: (NSString *) aString; 

    //检测字符串的后缀    // xxxx.jpg    判断 字符串的后缀是否是".jpg"    // xxxx.png    // xxxx.jpeg    // xxxx.gif    NSString *imgName = @"xxxxx.doc";    // [str hasSuffix:@"带检测的后缀"]    if([imgName hasSuffix:@".jpg"]||[imgName hasSuffix:@".png"]||[imgName hasSuffix:@".jpeg"]||[imgName hasSuffix:@".gif"]){                NSLog(@"是一个图片");    }else{                NSLog(@"这不是一个图片");    }

 2、字符串查找

                        - (NSRange)rangeOfString:(NSString *)aString;

                        用来检查字符串内容中是否包含了aString

                        如果包含就返回aString在字符串中第一次出现的范围 
                       

        //字符串的查找        // 查找某个字符串在另外一个字符串中首次出现的位置        //     0123456789        //1  @"asdaiosffsdafiosasdfsffitcastasdfasd"        //2  @"ios"        //   4   3                //  1 rangOfString 2        NSString *str1 =@"asdaiosffsdafiosasdfsffitcastasdfasd";        NSString *str2 =@"cjk";        // 字符串查找        // 查找2 在 1中首次出现的位置        // 如果查找到了,返回2在1中的位置和长度        // 如果查找不到,返回的信息:        //            location   特别大的数(NSNotFound) 最大的long类型的数        //            length     0        // range 结构体变量  NSRange 结构别名       NSRange range =  [str1 rangeOfString:str2];                //判断是否查找到了        if(range.location!=NSNotFound){        //range.location 表示字符串首次出现的位置        //range.length 字符串出现的长度(实质上就是子字符串的长度)        NSLog(@"%lu,%lu",range.location,range.length);        }else{                    NSLog(@"在%@中没有找到这个字符串%@",str1,str2);        }        
3、NSRange

           NSRange使用

                 NSRange是Foundation框架中比较常用的结构体, 它的定义如下:

         typedef struct _NSRange {

                               NSUInteger location;

                               NSUInteger length;

                               } NSRange;

             // NSUInteger的定义
                          typedef unsigned int NSInteger;typedef unsigned long NSUInteger;

                          NSRange用来表示事物的一个范围,通常是字符串里的字符范围或者数组里的元素范围

                NSRange有2个成员
                         NSUInteger location :表示该范围的起始位置

                         NSUInteger length : 表示该范围内的长度 

      Range的创建方法:

int main(int argc, const char * argv[]) {    @autoreleasepool {               NSRange range;  //range 结构体变量        NSRange *r ;    // r 结构体指针                //range变量的初始化方式        //1) 通过结构体变量访问成员        range.location = 3;        range.length = 2;                //2) 结构体变量整体赋值        range = (NSRange){5,3};        NSRange r2 = {4,5};  //最简单的                //3)        NSRange r3 = {.location = 3};  //只是给结构体变量中的.location 成员赋值                //4) OC中新增的        //NSMakeRange函数的作用给 NSRange结构体变量赋值        NSRange r4 = NSMakeRange(3, 3);                //查看结构体变量的值        NSLog(@"%ld,%ld",r4.location,r4.length);        //可以把结构体变量转换为 NSString类型        NSLog(@"%@",NSStringFromRange(r4));                    }    return 0;}
4、字符串的截取

              - (NSString *)substringFromIndex:(NSUInteger)from;

                 从指定位置from开始(包括指定位置的字符)到尾部

                 - (NSString *)substringToIndex:(NSUInteger)to;

                 从字符串的开头一直截取到指定的位置to,但不包括该位置的字符

                 - (NSString *)substringWithRange:(NSRange)range;

                 按照所给出的NSRange从字符串中截取子串 

    

 NSString *str = @"<itcast>传智iOS学院最牛X</itcast>";    //  @">"  loc+1    NSUInteger loc = [str rangeOfString:@">"].location + 1;  //"传"得位置    //  @"</" loc    NSUInteger len = [str rangeOfString:@"</"].location - loc;  //要截取的字符的长度    // 构建 ruange    NSRange r2 = {loc,len};    // 截取    NSString *subStr = [str substringWithRange:r2];    NSLog(@"subStr = %@",subStr);
结果:


5、字符串的替换

  //字符串的替换        // @"asdfsdafasdfdasdfsa"  ----> a 替换成 "*"        // @" asdfasfd asdfsadf asdf asdfas asdf asdf asdfa"                NSString *str =@"asdfsdafasdfdasdfsa";        //        str stringByReplacingOccurrencesOfString:@"源字符串中的内容" withString:@"要替换成新的内容"        //把a替换成 *        NSString *newStr = [str stringByReplacingOccurrencesOfString:@"a" withString:@"*"];        NSLog(@"newStr = %@",newStr);                // 把空格给去掉        str =@" asdfasfd asdfsadf asdf asdfas asdf asdf asdfa";        newStr = [str stringByReplacingOccurrencesOfString:@" " withString:@""];         NSLog(@"newStr = %@",newStr);                //将http:**ios.itcast.cn*ios*images*content_25.jpg中的*替换为/        str =@"http:**ios.itcast.cn*ios*images*content_25.jpg";        newStr = [str stringByReplacingOccurrencesOfString:@"*" withString:@"/"];                 NSLog(@"newStr = %@",newStr);                //  http:**  ios.itcast.cn  *ios*images*  content_25.jpg        // 1) 空格 替换成空        // 2) 把*替换成/                str = @"http:**  ios.itcast.cn  *ios*images*  content_25.jpg";        newStr = [str stringByReplacingOccurrencesOfString:@" " withString:@""];                newStr = [newStr stringByReplacingOccurrencesOfString:@"*" withString:@"/"];                    NSLog(@"newStr = %@",newStr);    
结果:













0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 小米5的4g网速慢怎么办 红米4a卡机了怎么办 信而富逾期3个月怎么办 苹果6锁屏密码忘了怎么办 孕8个月咳嗽有痰怎么办 微信红包输了6万怎么办 红米3s开不了机怎么办 核载5人载了6人怎么办 我欠支付宝2万6怎么办 我47岁这个月经不来怎么办 两个月不来月经了也没怀孕怎么办 婴儿不吃奶粉母乳又不够吃怎么办 怀孕39周了还没反应怎么办 脸过敏了又红又痒怎么办 刚开的淘宝店没生意怎么办 我22岁长得显老怎么办 卡的钱被qq转走怎么办 招行u盾密码忘了怎么办 孩子上五年级了成绩非常差怎么办 红米3s开不开机怎么办 皮肤被虫子咬了红肿痒怎么办 微信被骗了1万多怎么办 6个月宝宝吃了纸怎么办 农行k宝扣了50块怎么办 4g流量用的太快怎么办 怀疑老公有外遇最明智的怎么办 咽喉疼怎么办最简单的方法如下 生完孩子后腰疼的厉害怎么办 眼睛进东西了弄不出来怎么办 18k金不给换黄金怎么办 我22岁欠了10万怎么办 1岁宝宝又吐又拉怎么办 月经10天了还没干净怎么办 舌头有异味怎么办是有口臭吗 快8个月羊水破了怎么办 25岁欠了50万债怎么办 28岁血压高150低压110怎么办 苹果6的4g网络慢怎么办 一个月染了6次头怎么办 五0二干在衣服上怎么办 刚怀孕见红了肚子不痛怎么办