美文网首页iOS开发iOS备忘录
Foundation使用示例(NSString、NSMutabl

Foundation使用示例(NSString、NSMutabl

作者: _浅墨_ | 来源:发表于2015-12-18 14:02 被阅读246次

    1. NSString字符串比较

    void test(){
    
        NSString *str = @"ccd";  // 3
        
        NSString *str2 = @"bcde";// 4
        
        //比较两个字符串大小:
        //比较每个字符的ascii码值
        //compare 比较字符串
        //str > str2    1
        //    <         -1
        //    ==         0
        //       NSComparisonResult result =  [str compare:str2];
        
        //指定条件的字符串比较
        //NSCaseInsensitiveSearch 不区分大小写
        //默认的区分大小写
        //        result = [str compare:str2 options:NSCaseInsensitiveSearch];
        
        //按照字符的个数进行比较
        NSComparisonResult result = [str compare:str2 options:NSNumericSearch];
        
        switch (result) {
            case NSOrderedAscending:
                NSLog(@"str < str2");
                break;
            case NSOrderedSame:
                NSLog(@"str == str2");
                break;
            case NSOrderedDescending:
                NSLog(@"str > str2");
                break;
                
            default:
                break;
        }
        
        //OC中字符串比较的时候,可以加条件  区分大小写  字符的个数
      }
    
    

    2. NSString前后缀检查及搜索

    
    void test(){
    
        NSString *url = @"http://asdfasdfasdfaasdfadsfaf";
        
        //判断这个地址,是否是一个网址
        //1、 hasPerfix  检查字符串是否以另外一个字符串开头
        
        if([url hasPrefix:@"http://"]){
            
            NSLog(@"这是一个网址");
            
        }else{
            
            NSLog(@"这不是一个网址");
            
        }
        
        
        //2、检查后缀
        // 需求,检查是否是一张图片   jpg   png  jpeg
        // 先检是否是一个png的图片
        NSString *str = @"logo.txt";  //logopng
        if([str hasSuffix:@".png"]||[str hasSuffix:@".jpg"]||[str hasSuffix:@".jpeg"]){
            
            NSLog(@"是图片");
            
        }else {
            
            NSLog(@"不是图片");
            
        }
        
        
         //字符串的查找
            NSString *str = @"asitxcastdfafsadfxyz asdfasdfsadfa sadf";
            
            // rangeOfString 作用是查找子字符串itcast在 str中第一次出现的位置
            // 如果找能够查找到字符串,则返回子字符串的位置信息
            // 如果查找不到,则返回的Range
            //                       位置 是一个特别大得数
            //                       length 0
            NSRange range = [str rangeOfString:@"itcast"];
            
            //NSNotFound 是一个最大的long 无符号数
            //如果查找不到 range.location 是一个最大的long 无符号数
            if (range.location != NSNotFound) {
                 NSLog(@"位置:%ld,长度:%ld",range.location,range.length);
            }else{
            
                NSLog(@"没有查找到");
            }
    
    
    
    }
    
    

    3. NSRange 的使用

    
    /*
      NSRange 是一个结构体
      用来表示范围
      有两个成员变量: location 表示范围的起始位置  length 表示范围的长度
     
      NSRange的几种创建方式:
     
      1)直接赋值
      
       NSRange range1 = {2,5};
     
      2)先定义后赋值
     
       NSrange range2;
       range2.location = 1;
       range2.length = 23;
     */
     
      //1)直接赋值
            
            NSRange range1 = {2,5};
            NSLog(@"loc = %ld,len = %ld",range1.location,range1.length);
            
      //2)先定义后赋值
            
            NSRange range2;
            range2.location = 1;
            range2.length = 23;
            NSLog(@"loc = %ld,len = %ld",range2.location,range2.length);
            
            //3)使用NSMakeRange创建一个NSRange类型的变量
            NSRange range3 = NSMakeRange(45, 3);
            NSLog(@"loc = %ld,len = %ld",range3.location,range3.length);
     
    
    

    4. 字符串的截取和替换

    void test(){
    
        NSString *str = @"aaaaaaabbbbbbbccccccdddddd";
        
        //从指定的位置出开始(包含此位置),到最后
        //substringFromIndex
        NSString *newStr = [str substringFromIndex:7];
        
        
        //从起始位置开始,到指定位置(不包含指定位置)结束
        newStr = [str substringToIndex:5];
        
        //截取指定范围的字符串
        NSString *dateStr = @"2015-01-29 12:12:30";
        //获取日期
        NSRange range = {0,10};
        
        //获取时间
        range = NSMakeRange(11, 8);
        
        //获取指定范围的字符串
        newStr = [dateStr substringWithRange:range];
        
        NSLog(@"%@",newStr);
    
    }
    
    
    void test2(){
    
        
        NSString *str = @"<imufeng>沐风科技</imufeng>";
        
        unsigned long loc = [str rangeOfString:@">"].location+1;
        unsigned long len = [str rangeOfString:@"</"].location - loc;
        
        NSLog(@"%ld,%ld",loc,len);
        
        NSRange range = {loc,len};
        
        NSString *newStr = [str substringWithRange:range];
        
        NSLog(@"newStr = %@",newStr);
    
    }
    
    
    void test3(){
    
    //把imufeng  -->  ios
            NSString *str = @"<imufeng>沐风科技</imufeng>";
            //在str中 将所有的 imufeng 都替换成 ios
            //str stringByReplacingOccurrencesOfString:@"imufeng" withString:@"ios"
            
            NSString *newStr = [str stringByReplacingOccurrencesOfString:@"imufeng" withString:@"ios"];
            
            
            
            //将http:**ios.imufeng.cn*ios*images*content_25.jpg中的*替换为/
            str = @"http:**ios.imufeng.cn*ios*images*content_25.jpg";
            newStr = [str stringByReplacingOccurrencesOfString:@"*" withString:@"/"];
            
            
            //"  http:**  ios.imufeng.cn  *ios*images*  content_25.jpg " 的空格去掉,并且将*替换为/
            str= @"  http:**  ios.imufeng.cn  *ios*images*  content_25.jpg ";
            
            //先替换空格 空
            str = [str stringByReplacingOccurrencesOfString:@" " withString:@""];
            
            newStr = [str stringByReplacingOccurrencesOfString:@"*" withString:@"/"];
            
            NSLog(@"%@",newStr);
    
    }
    
    
    

    5. 字符串的其他用法

    
    /**
     *  取出每一个字符
     */
    void test1(){
    
        
        NSString *str = @"ios.itcast.cn";
        
        //1、获取字符串的长度
        //调用字符串的length方法
        //str.length  ---->  [str length];
        NSLog(@"%ld",str.length);
        
        //2、获取字符的每一个字符
        unsigned long len = str.length;
        
        for (int i=0; i<len; i++) {
            unichar c = [str characterAtIndex:i];
            printf("%c  ",c);
        }
       
    }
    
    
    /**
     *  字符串的转换问题
     */
    void test2(){
    
        int a = 23;
        //把整形数据包装成字符串了
        NSString *s0 = [NSString stringWithFormat:@"%d",a];
        
        //字符串和基本数据类型转换问题
        NSString *s1 = @"12";    //12+2
        //        s1+2;
        NSString *s2 = @"2.3";
        NSString *s3 = @"345.678";
        
        //把字符串转换为 int类型
        int n1 = [s1 intValue];
        NSLog(@"n1 = %d",n1*34);
        
        //字符串转换为float
        float f1 = [s2 floatValue];
        NSLog(@"f1 = %f",f1+3);
        
        //把字符串转换为double类型
        double d1 = [s3 doubleValue];
        NSLog(@"d1 = %f",d1+3);
        
        //把OC的字符串对象转换为C语言的字符串
        //@"xxxx"  %@      "xxxxx"  %s
        
        NSString *s4 = @"helloworld";
        const char *ss = [s4 UTF8String];
        
        printf("%s\n",ss);
        
        //把c的字符串转换为OC字符串对象
        char ch[]="itcast";
        NSString *ocStr = [NSString stringWithUTF8String:ch];
        NSLog(@"%@",ocStr);
    
    }
    
    
    void test3(){
    
            NSString *str = @" itc ast ";
       
            //1、去除字符串首尾的空格
            NSCharacterSet *set =[NSCharacterSet whitespaceCharacterSet];
            NSString *newStr = [str stringByTrimmingCharactersInSet:set];
            
            str= @"IOSitAcastIT";
            //2、取出字符串的首尾大写字符
            newStr  = [str stringByTrimmingCharactersInSet:[NSCharacterSet uppercaseLetterCharacterSet]];
            
            
            
            NSLog(@"-----%@-----",newStr);
    
    }
    
    
    

    6. NSMutableString

    
    void test1(){
    
            //不可变的字符串
            NSString *str = @"Jack";
            str = @"Rose";
            //截取
            NSString *newStr = [str substringToIndex:2];
            NSLog(@"%@",newStr);
            
            
            //可变字符串
            //创建一个空字符串
            NSMutableString *str2 = [NSMutableString string];
            //给字符串追加内容
            [str2 appendString:@"welcome"];
            [str2 appendString:@" to"];
            [str2 appendString:@" itcast!"];
            
            NSLog(@"%@",str2);
    
    }
    
    /**
     *  可变字符串的常用的方法
     */
    void test2(){
    
        //定义一个可变的字符串
        //NSString  不可变
        //NSMutableString 可变
        NSMutableString *str = [NSMutableString string];
        //追加字符串
        [str appendString:@"xxxxx"];
        
        int a = 10;
        float f1 = 3.14;
        char ch = 'x';
        NSString *it = @"imufeng";
        
        //格式化的追加字符串
        [str appendFormat:@" a = %d, f1 = %.2f,ch = %c --->%@",a,f1,ch,it];
        
        NSRange range = {5,5};
        //删除指定范围的字符串
        [str deleteCharactersInRange:range];
        
        
        //增加字符串@“ios”到str字符串中
        [str insertString:@"ios" atIndex:5];
        
        //替换字符串
        [str replaceCharactersInRange:range withString:@"zzzzz"];
        
        //先查找再替换
        //imufeng  iosios
        //                 查找字符串
        NSRange range2 = [str rangeOfString:@"imufeng"];
        //                 替换字符串
        [str replaceCharactersInRange:range2 withString:@"iosios"];
        
        
        NSLog(@"%@",str);
    
    }
    
    -(void)test3(){
    
            //可变字符串易犯的错误
            //1、给可变字符串赋值了常量
            NSMutableString *str = @"xxxxx";
            // [str appendString:@"imufeng"];
            
            NSMutableString *str2 = [NSMutableString string];
            [str2 appendString:@"imufeng"];
            //2、通过string的属性,可以修改字符串的内容
            str2.string = @"xxxxxx";
            
            // str2 rangeOfString:<#(NSString *)#> options:0
            NSLog(@"%@",str2);
          
    }
    
    
    

    7. NSArray 的介绍和基本使用

    
    -(void)test {
    
            //NSArray是OC中的数组类
            //1、创建NSArray的方法
            /*
             
             + (instancetype)array;
             + (instancetype)arrayWithObject:(id)anObject;
             + (instancetype)arrayWithObjects:(id)firstObj, ...;
             + (instancetype)arrayWithArray:(NSArray *)array;
             + (id)arrayWithContentsOfFile:(NSString *)path; // 读取一个xml文件.
             + (id)arrayWithContentsOfURL:(NSURL *)url; // 读取一个xml文件.
    
             */
            //数组的最后一个值,我们默认的初始化为nil,nil表示数组结束了
            NSArray *array1 = [NSArray arrayWithObjects:@"1",@"2",nil,@"3",nil];
            
            //使用一个已经存在的数组,创建另外一个数组
            NSArray *arr2 = [NSArray arrayWithArray:array1];
            
            
            NSLog(@"%@,%@",array1,arr2);
            
            NSArray *arr3 = [[NSArray alloc] initWithObjects:@"one",@"two",@"four", nil];
            
            // NSLog(@"%@",array1[2]);
            NSLog(@"%@",arr3);
            
            //创建一个空数组
            NSArray *arr4 = [NSArray array];
            NSLog(@"%@",arr4);
    }
    
    
    

    8. NSArray 读写文件

    
    void test(){
    
        //定义一个数组
        NSArray *arr = @[@"1",@"2",@"3",@"4",@"5",@"six",@"seven",@"8"];
        
        //把数组的内容保存到文件中
        //1)路径     2)原子性     3)编码      4)错误
        // writeToFile
        // .plist 是一个什么文件,它使一个资源文件
        BOOL isSuccess = [arr writeToFile:@"/Users/apple/Desktop/arr.xml" atomically:YES];
        if (isSuccess) {
            NSLog(@"写入成功!");
        }
    
    
    }
     
    // 2、从文件中读取数据,并且放到数组中
    -(void)test2(){
    
            // 1)路径      2)类方法
            NSArray *arr2 = [NSArray arrayWithContentsOfFile:@"/Users/apple/Desktop/arr.xml"];
            
            NSLog(@"arr2 = %@",arr2);
    
    }
    
    
    
    

    9. NSArray 与字符串

    
    /**
     *  把数组元素连接成一个字符串
     */
    void test(){
    
        //定义一个数组
        NSArray *arr = @[@"1",@"2",@"3",@"4",@"5",@"six",@"seven",@"8"];
        
        //componentsJoinedByString 方法的作用是把数组元素连成一个字符串
        //连接字符串的时候,还可以指定元素和元素之间的分隔符
        NSString *str = [arr componentsJoinedByString:@"-"];
        
        NSLog(@"%@",str);
    }
    
    
    
    void test2(){
    
            //@"400-517-517"
            NSString *tel = @"400-517-517";
            //componentsSeparatedByString
            //把tel这个字符串 ,用 - 做分隔
            //把分隔后的每一部分存放到数组中
            
            NSArray *arr = [tel componentsSeparatedByString:@"-"];
            
            NSLog(@"%@",arr);
    }
    
    
    
    

    10. NSMutableArray及基本使用

    
    -(void)test{
    
            //NSMutableArray 创建方法
            
            //********** 数组的创建方法 ************
            //1、可以创建空数组
            NSMutableArray *arr = [NSMutableArray array];
            //定义一个长度为5的数组
            NSMutableArray *arr2 = [[NSMutableArray alloc] initWithCapacity:5];
            //2、可以调用类方法,创建数组
            NSMutableArray *arr3 = [NSMutableArray arrayWithObjects:@"1",@"two",@"3", nil];
            //3、可以调用对象方法,创建数组
            NSMutableArray *arr4 = [[NSMutableArray alloc] initWithObjects:@"1",@"3", nil];
            
            
            NSArray *array = @[@"1",@"10",@"100",@"1000"];
            //********* 数组的使用 ***********
            // 1、可以向数组添加元素
            [arr addObject:@"one"];
            [arr addObject:@"one"];
            [arr addObject:@"one"];
            [arr addObject:@"one"];
            
            // 把另外一个数组,整体添加到数组中
            [arr2 addObjectsFromArray:array];
            
            // 2、计算数组的长度
            NSUInteger len = arr.count;
            
            // 3、插入一个元素在指定的位置
            [arr insertObject:@"1" atIndex:2];
            
            // 4、删除最后一个元素
            [arr removeLastObject];   //删除最后一个元素
            [arr removeObject:@"1"];  //删除指定元素
            
            // 5、替换元素
            //[arr replaceObjectAtIndex:1 withObject:@"two"];
            arr[1] = @"two";
            
            // 6、交换元素
            [arr exchangeObjectAtIndex:0 withObjectAtIndex:1];
            
            
            //NSMutableArray 错误用法
            // NSMutableArray *arr8 = @[@"one",@"two"];
            // [arr8 addObject:@"three"];
            
            NSLog(@"len = %ld",len);
            NSLog(@"%@",arr);
    
    
    }
    
    
    

    12. NSDictionary的介绍及使用

    
    /**
     *  字典的创建方法
     */
    void test(){
    
        //NSDictionary 字典
        //NSArray     @"1"  @“2”
        
        //字典的结构
        // 键值对
        // key(键)   value(实际的值)
        // zs             张三
        // ls             李四
        
        //创建字典
        //1、使用类方法创建字典
        //   字典初始化后,内部是无序的
        NSDictionary *dict1 = [NSDictionary dictionaryWithObjectsAndKeys:@"zhangsan",@"zs",@"lisi",@"ls", nil];
        
        NSDictionary *dict2 = [[NSDictionary alloc] initWithObjectsAndKeys:@"zhangsan",@"key1",@"lisi",@"key2", nil];
        
        NSLog(@"%@",dict2);
        //获取字典的长度
        NSLog(@"%ld",dict2.count);
        
        //2、快速创建字典  @{key:value,key1:value1}
        // 在字典中,key值是不能够重复的,重复的时候不会报错
        // 重复的只保留一个(第一次出现的那个)
        NSDictionary *dict3 = @{@"zs":@"zhangsan",@"ls":@"lisi",@"zs":@"fengjie"};
        NSLog(@"%@",dict3);
    
    }
    
    /**
     *  NSDictionary 基本使用
     */
    void test2(){
    
        //字典长度 ?
        // 2   -- @"zs":@"fengjie"  没有被添加到字典中,原因是key值重复了
        NSDictionary *dict3 = @{@"zs":@"zhangsan",@"ls":@"lisi",@"zs":@"fengjie"};
        //1) 获取字典长度(键值对的个数)
        NSLog(@"%ld",dict3.count);
        NSLog(@"%@",dict3);
        
        //2)根据key获取 value 只获取zs
        NSString *s = [dict3 objectForKey:@"zs"];
        NSLog(@"%@",s);
    
    
    }
    
    
    -(void)test3(){
    
             NSArray *arr = @[@"1",@"2"];
             NSDictionary *dict3 = @{@"zs":@"zhangsan",@"ls":@"lisi",@"arr":@"fengjie"};
            //1、关于字典的遍历问题
            //for(int i=0;i<dict3.count;i++){
            
                //根据key  --->  value
            
            //}
            
            //2、使用增强型for 循环可以遍历
            // str 存放的 key    还是 value
            // 通过这种方式,得到的是字典的key值
            //        for (NSString *str in dict3) {
            //            // 得到的事key
            //            NSString *ss = [dict3 objectForKey:str];
            //            NSLog(@"%@ ---> %@",str,ss);
            //        }
    
            // 3、使用block 进行遍历
            // key  就是我们键值对 key值
            // obj  就是我们key 对应的 value值
            
            [dict3 enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
                
                NSLog(@"%@--->%@",key,obj);
            }];
    
    }
    
    

    13. NSDictionary的简写及文件操作

    
    /**
     *  Dictionary的简写形式
     */
    void test(){
    
        //创建字典的简写形式
        NSDictionary *dict3 = @{@"zs":@"zhangsan",@"ls":@"lisi",@"arr":@"fengjie"};
        
        //获取value值得简写形式
        NSLog(@"%@",dict3[@"arr"]);
    
    }
    
    
    -(void)test2(){
    
    //NSDictionary的文件操作
            
            NSArray *arr = @[@"1",@"2",@"one"];
            
            NSDictionary *dict = @{@"1":@"one",@"2":@"two"};
            //1、把字典的内容写入到文件中
            //   writeToFile
            NSDictionary *dict3 = @{@"zs":@"zhangsan",@"dict":dict,@"arr":arr};
            //把字典写入到文件中
           BOOL flag = [dict3 writeToFile:@"/Users/apple/Desktop/dict.plist" atomically:YES];
            if (flag) {
                NSLog(@"写入成功!");
            }
            
            //2、从文件中读取数据,放到字典中
            // 给一个路径
            NSDictionary *dict4 = [NSDictionary dictionaryWithContentsOfFile:@"/Users/apple/Desktop/dict.plist"];
            
            //获取字典中的数组
            NSArray *arr2 = dict4[@"arr"];
            NSLog(@"%@",arr2);
            
            //获取字典中的字典
            NSDictionary *dict5 = dict4[@"dict"];
            NSLog(@"%@",dict5);
    
    }
    
    

    14.NSMutableDictionary介绍和使用

    -(void)test(){
    
            //创建可变NSMutableDictionary
            // 创建一个空的字典
            NSMutableDictionary *dict1 = [NSMutableDictionary dictionary];
            // 使用类方法创建一个字典
            NSMutableDictionary *dict2 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"v1",@"k1",@"v2",@"k2", nil];
            
            //2、可变字典的常见方法
            //1) 添加元素
            //给他设置值
            //如果添加一个值,实际上是添加一组键值对
            
            [dict1 setObject:@"one" forKey:@"1"];
            [dict1 setObject:@"two" forKey:@"2"];
            [dict1 setObject:@"three" forKey:@"3"];
            [dict1 setObject:@"four" forKey:@"4"];
            
            //使用dictionary 给字典重新赋值
            dict1.dictionary =@{@"zs":@"zhangsan"};
            dict1[@"1"] = @"one";
            dict1[@"2"] = @"one2";
            dict1[@"3"] = @"one3";
            dict1[@"4"] = @"one4";
            
            //2) 删除元素
            [dict1 removeObjectForKey:@"3"];
            
            //3)  删除所有元素
            //        [dict1 removeAllObjects];
            
            NSLog(@"%@",dict1);
    }
    
    

    相关文章

      网友评论

        本文标题:Foundation使用示例(NSString、NSMutabl

        本文链接:https://www.haomeiwen.com/subject/pumphttx.html