A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© zhuhoulin 中级黑马   /  2015-7-26 21:31  /  646 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

NSString字符串比较
    1.字符串比较函数
       1)比较字符串的大小-----compare方法,compare返回结果三种
          str > str2                 NSOrderedDescending           1
          str < str2                 NSOrderedAscending           -1
          str = str2                 NSOrderedSame            0
          例子:
          NSComparisonResult result = [str compare:str2];
          可以设置比较条件:
          NSComparisonResult result = [str compare:str2 options:NSCaseInsensitiveSearch];//比较的时候不区分大小写
          NSComparisonResult result = [str compare:str2 options:NSCaseInsensitiveSearch | NSNumericSearch];//比较的时候,
              既不区分大小写,同时又要比较字符个数
          还有一个参数NSLiteralSearch:进行完全比较,区分大小写,这也是默认情况下的方式。
      2)判断字符串是否相等
         ==不能够判断字符串相等
         NSString *str1 = @”abc“;//地址在常量区
         NSString *str2 = @”abc“;//地址在常量区
         NSString *str3 = [NSString stringWithoutFormat:@"abc"];//地址在堆区
         if(str1 == str2)//比较后结果是1,因为str1和str2比较的是地址,而在常量区同样的变量只保存一份,故而两者相同
               NSLog(@"1");
         else
               NSLog(@"0");
         if(str1 == str3)//比较结果为0,因为地址不相同
               NSLog(@"1");
         else
               NSLog(@"0");
         故这种比较方法是错误的。正确的比较方法如下:
         //使用isEqualToString,该方法的返回值为bool类型YES和NO。该方法是区分大小写的。
         if([str1 isEqualToString:str3])
     2.NSString的前后缀检查及搜索
        1)NSString的前后缀检查hasPrefix/hasSuffix
              检测前缀:
              NSString *url = @"http://www.baidu.com";
              检查输入的是不是一个网址(及是否以http开头或者https开头)
              if([url hasPrefix:@"http://"] || [url hasPrefix:@"http://"]){
                          NSLog(@"是一个网址")
              }
              else{
                          NSLog(@"不是一个网址");
              }

              检测后缀:
              判断是不是一个图片
              NSString *imgName = @"xxxxx.jpg";
              if([imgName hasSuffix:@".jpg"]){
                        NSLlog(@"是一张图片");
              }
              else{
                        NSLog(@"不是一张图片");
              }           
            2)字符串查找(某个字符串是否包含在另一个字符串中,存在于另一个字符串中的位置),
               str1 rangofString str2;//查找str2在str1中首次出现的位置,location+length.
               NSString * str1 = @"asdfqwezxcasdqwe";
               NSString * str2 = @"qwe";
               NSRange range = [str1 rangeofString:str2];
               if(range.location != NSNotFound){//如果没有查找到,返回值为long类型的最大整型数。
                NSLog(@"%lu,%lu",range.location,range.length);               
               }
               else{
                   NSLog(@"没有找到字符串");
               }
      3.NSString的其他用法
         (1)获取字符串的每个字符
              [str characterAtIndex:i];
         (2)字符串和其他字符串的转换问题
              字符串转各种数值
           NSString *str = @"1";
           NSString *str1 = @"3.14";
           int b = [str intValue];
           float a = [str1 floatValue];

           OC的字符串和C的字符串的相互转换
               C字符串转化为OC思路:
                      1)用C创建一个C语言字符串
                      2)将C创建的C字符串转化为OC中的字符串对象
                      char *s = "zhangsanfeng";
                      printf("%s",s);
                      NSString *str =[NSString stringWithUTF8String:s];
                      NSLog(@"str = %@",str);
               OC字符串转换为C字符串
                      NSString *str = @"zbz";
                      const char *s1 = [str UTF8String];

1 个回复

倒序浏览
  OC字符串转换为C字符串
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马