zoukankan      html  css  js  c++  java
  • Obbjective-C-Foundation框架中的NSString与NSMutableString的用法

    Foundation框架

      框架是由许多类、方法、函数、文档按照一定的逻辑组织起来的集合,以便使研发程序变得更容易.

      Foundation框架允许使用一些基本对象,如数字和字符串,以及一些对象集合,如数组,字典和集合,其他功能包括处理日期和时间、内存管理、处理文件系统、存储(或归档)对象、处理几何数据结构(如点和长方形)

    显示隐藏文件 : defaults write com.apple.finder AppleShowAllFiles –bool true

    隐藏隐藏文件 : defaults write com.apple.finder AppleShowAllFiles –bool false

    ---------------NSString的用法

        1).直接创建方式:

        NSString *str = @"abc";
    

     

        2).格式化创建:

        NSString *st2 = [NSString stringWithFormat:@"%@", @"jack"];
    
        NSString *str = [[NSString alloc] initWithFormat:@"My age is %d", 10];
    

       3).文本编码:

        中文 :GBK(3个字节)     GB2312(3个字节)

        UTF - 8:国际通用编码(2个字节)

        4). 字符串写入文件:  

                                         
    

           NSError *err;//错误对象

        [str writeToFile:@"/Users/zhaoxiaohu/Desktop/" atomically:YES  encoding:NSUTF8StringEncoding error:&err];
    
         if (err != nil) {
    
            NSLog(@"写入失败!,%@",err);
    
        }else{
    
              NSLog(@"写入成功");
    
        }
    

        5).字符串从文件读取:

       NSError *err;
    
        NSString *str = [NSString stringWithContentsOfFile:@"/Users/zhaoxiaohu/Desktop/str.txt" encoding:NSUTF8StringEncoding error:&err];
    
        if (err != nil) {
    
                NSLog(@"读取失败!,%@",err);
    
            }else{
    
                
    
                NSLog(@"读取成功");
    
                NSLog(@"%@",str);
    
            }
    

     

        6).字符串比较函数:

        NSComparisonResult result = [str1 compare:str2];

        //比较的时候,不区分大小写,参考字符的个数进行比较

        NSComparisonResult result = [str1 compare:str2 options:NSCaseInsensitiveSearch|NSNumericSearch];

        返回值:

        NSOrderedAscending(str1<str2)升序

        NSOrderedDescending(str1>str2)降序

        NSOrderedSame(str1 = str2)相等

        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;
    
        }
    

          7). 判读字符串是否相等:

        NSString *str1 = @"abc";

        NSString *str2 = @"abc";

        str1 == str2       比较的是地址  (==比较的是字符串的地址)

        [str1 isEqualToString:str3],比较的是内容,区分大小写(这个方法非常常用)

      NSString *str1 = @"abc";
    
        NSString *str2 = @"abc";
    
     
    
    //地址的比较
    
            // "==" 不能够判断字符串是否相等的
    
            
    
            //判断字符串内容真正是否相等,使用是
    
            //isEqualToString:
    
            //注意:他是区分大小写的
    
            
    
            if ([str1 isEqualToString:str3]) {
    
                NSLog(@"相等");
    
            }else{
    
                
    
                NSLog(@"不相等");
    
            }
    
            
    

      8). 检测字符串前后缀:

        NSString *url = @"http://asdfasdfasdfaasdfadsfaf";

        [url hasPrefix:@"http://"]; 字符串是否以http:开头//检测前缀

        NSString *imgName = @"logo.jpg";

        [imgName hasSuffix:@".jpg"]; 检测字符串是否以.jpg结尾//检测后缀

       NSString *url =@"http://sjhasfjkfsjfhskfsbbbbb";
            if( [url hasPrefix:@"http"]){
                NSLog(@"是网址");
                if ([url hasSuffix:@".jpg"]) {
                    NSLog(@"是图片");
                }else{
                    NSLog(@"不是");
                }
            
            }
    

        9).查找字符串:

    格式:

            NSRange range = [str1 rangeofString:str2]; //str1 中找str2

        

    NSString *url =@"http://sjhasfjkfsjfhskfsbbbbb";
    
     
    
    //在一个字符串中查找另一个字符串出现的手位置
    
        NSRange range = [str rangeOfString:@"sj"];
    
        //NSNotFound 是一个最大的long 无符号数
    
        //如果查找不到 range.location 是一个最大的long 无符号数
    
        //range.location 表示字符串首次出现的位置
    
        //range.length   表示子字符串的长度
    
        if (range.location != NSNotFound) {
    
            NSLog(@"位置:%lu,长度:%lu",range.location,range.length);
    
        }else{
    
          NSLog(@"没有查找到");
    
        }
    
     
    

    -----------------字符串的截取和替换

        1,从指定位置from开始(包含起始位置)到尾部

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

         2,从字符串的开头一直截取到指定的位置to,不包含结束位置

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

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

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

    NSString *str = @"http://www.baidu.com";
    
        //1) 从xx位置开始,到最后结束(包含xx这个位置的字符)
    
        NSString *str1 = [str substringFromIndex:5];
    
        NSLog(@"str1 = %@",str1);
    
        //2) 从开始位置,到xx位置结束(不包含xx这个位置)
    
        NSString *str2 = [str substringToIndex:5];
    
        NSLog(@"str2 = %@",str2);
    
         //3) 截取一个范围 range
    
        NSRange r1 = {3,4};
    
        NSString *str3 = [str substringWithRange:r1];
    
        NSLog(@"str3 = %@",str3);
    
        
    

        4,字符串截取练习(获取itcast标签中的内容)

            

    NSString *str = @"<itcast>乔布斯</itcast>";
    
            //  @">"  loc+1
    
            NSUInteger loc = [str rangeOfString:@">"].location + 1;  //"传"得位置
    
            //  @"</" loc
    
            NSUInteger len = [str rangeOfString:@"</"].location - loc;  //要截取的字符的长度
    
            // 构建 ruange
    
            NSRange r2 = NSMakeRange(loc, len);
    
            // 截取
    
            NSString *subStr = [str substringWithRange:r2];

                   NSLog(@"subStr = %@",subStr);

        5,字符串替换                                               

    str stringByReplacingOccurrencesOfString:@"源字符串中的内容" withString:@"要替换成新的内容"

    NSString *str =@"asdfsdafasdfdasdfsa";
    
          //把a替换成 *
    
            NSString *newStr = [str stringByReplacingOccurrencesOfString:@"a" withString:@"*"];
    
            NSLog(@"newStr = %@",newStr);
    

     1、获取字符串的每个字符

    - (NSUInteger)length; 返回字符串的长度(有多少个字符,无论中文字符、英文字符等等,一个字符就是一个字符)

    - (unichar)characterAtIndex:(NSUInteger)index; 返回index位置对应的字符

     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);
        }
    

     三,字符串和其他数据类型转换

        1,和基本数据类型的转换

            - (double)doubleValue;

            - (float)floatValue;

            - (int)intValue;

            - (BOOL)boolValue;

     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);
    

        2,C字符串转OC 字符串

          

      char *s = "zhangsanfeng";
    
            NSString *str = [NSString stringWithUTF8String:s];
    

      3,OC字符串转C字符串

            

    NSString *str2 = @"zbz";
    
            const char *s1 = [str2 UTF8String];
    
     
    

      4,去除字符串首尾的空格

         

       NSString *str = @" itc ast ";
    
            NSCharacterSet *set =[NSCharacterSet whitespaceCharacterSet];
    
            NSString *newStr = [str stringByTrimmingCharactersInSet:set];
    
     
    

    四,通过NSURL读写字符串

        1,URL介绍

            URL的全称是Uniform Resource Locator(统一资源定位符).

            URL是互联网上标准资源的地址.

        2,URL格式

            基本URL包含:协议、主机域名(服务器名称IP地址)、路径

            举例: http://ios.itcast.cn/ios/images/content_25.jpg

            可以简单认为: URL == 协议头://主机域名/路径

        3,通过URL读写字符串

            构建URL

            NSURL *url = [NSURL URLWithString:@"file:///Users/apple/Desktop/str.txt"];//需要手动加file://协议头

            通过文件路径创建(默认就是file协议的)

            NSURL *url = [NSURL fileURLWithPath:@"/Users/apple/Desktop/str.txt"];//自动会将file://协议头加上

            NSString *str = @"$10000000";

            1),写入字符串

                [str writeToURL:url atomically:YES encoding:NSUTF8StringEncoding error:nil]
    

     2),读取字符串

    NSString *str2 = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
    

     五,NSMutableString的介绍和使用

        1, NSMutableString类继承NSString类

        2,NSMutableString和NSString的区别:

            NSString是不可变的, 里面的文字内容是不能进行修改的;

            NSMutableString是可变的, 里面的文字内容可以随时更改;

            NSMutableString能使用NSString的所有方法.(继承)

        3, 可变和不可变的概念:

            不可变: 指的是字符串在内存中占用的存储空间固定,并且存储的内容不能发生变化;

            可变:   指的是字符串在内存中占用的存储空间可以不固定,并且存储的内容可以被修改;

        4,使用:

             NSMutableString *str2 = [NSMutableString stringWithFormat:@"Jack"];

     1),添加:

                    [str2 appendString:@"&Rose"];//追加
    
                    [str appendFormat:@"http://www.baidu.com/%d",100];//格式化的添加字符串
    
     
    

      2),在指定的位置插入一个字符串:

                    

     [str insertString:@"p://" atIndex:3];
    

      3),删除一部分字符串:

                     [str deleteCharactersInRange:NSMakeRange(3, 4)];
    

    4),替换字符串的一部分内容

                     

    [str replaceCharactersInRange:NSMakeRange(11, 5) withString:@"itcast"];
    

     使用注意:

            1),不能将不可变的字符串赋值给可变的字符串;

                NSMutableString *str = [NSString stringWithFormat:@"abc"];

        

  • 相关阅读:
    高性能MySQL--创建高性能的索引
    error:0906D064:PEM routines:PEM_read_bio:bad base64 decode
    高性能MySQL--MySQL数据类型介绍和最优数据类型选择
    Elasticsearch入门和查询语法分析(ik中文分词)
    裁员浪潮,互联网人该何去何从?
    django+mysql的使用
    很详细的Django入门详解
    (2021年1月5日亲测有效)最新PyCharm 安装教程&激活破解,Pycharm激活,Pycharm破解
    (2021年1月5日更新)!最新的pycharm永久激活办法,亲测有效
    太干了!一张图整理了 Python 所有内置异常
  • 原文地址:https://www.cnblogs.com/yilizhijiaotianxiashao-yincaiersanshijianduo/p/4727500.html
Copyright © 2011-2022 走看看