天天看点

iOS开发学习专题-基础知识(一)NSString NSMutableString NSRange NSNotFound详细使用方式

本文主要讲解的是 不可变字符串NSStringNSString 可变字符串NSMutableString NSRangeNSNotFound详细使用方式 近期主要做的是iOS开发基础知识Objective-C中常用NS家族详细使用介绍,之后还会有关于NS类家族的详细使用方式 包括类型和值之间的转换。敬请期待

文章是博主原创,转载请标明出处 http://blog.csdn.net/werctzzz/article/details/70862522

#pragma mark 不可变字符串
    //  1.初始化方法
    NSString *str1 = [[NSString alloc]initWithFormat:@"这是第%d个字符串",1];
    NSLog(@"1%@", str1);
    NSString *str2 = [[NSString alloc]initWithString: str1];//字符串类型的初始化,用str1创建str2,相当于拷贝;
    NSLog(@"2%@",str2);
    
/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
    
    //  2.便利构造器
    NSString *str3 = [NSString stringWithFormat:@"%@", str2];
    NSLog(@"3%@",str3);
    
/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
    //  3.字符串长度
        //  3.1获取字符串长度
        NSLog(@"str3长度为%ld", [str3 length]);
    
        //  3.2获取字符串字节长度
        long Slength = strlen([str3 UTF8String]);
        NSLog(@"str3字节长度为%ld", Slength);
    
        //  3.3获取字符串单个字节长度
        // 遍历这个字符串,通过计算每一个字符字节来判断一下三种关系
        for (int i = 0 ; i < str3.length; i++) {
            NSString * temp = [str3 substringWithRange:NSMakeRange(i, 1)];
            long cl = strlen([temp UTF8String]);
            NSLog(@"每个字符字节长度%ld",cl);
        }
    
/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
    
    //  4.字符串包含的内容
        //  4.1 判断字符串是否包含某个前缀
        //从前往后读取
        if ([str3 hasPrefix:@"这是"]) {
            NSLog(@"%@中包含前缀'这是'", str3);
        }
        if ([str3 hasPrefix:@"第"]) {
            NSLog(@"%@中包含前缀'第'", str3);
        }
        NSLog(@"%d", [str3 hasPrefix:@"这是"]);
        //判断你输入的字符串里是否有[@"这是第%d个字符串"]里的东西,有的话返回1,没有返回0.
        
        //  4.2 判断字符串是否包含某个后缀
        //从后往前读取
        if ([str3 hasSuffix:@"串"]) {
            NSLog(@"%@中包含后缀'串'", str3);
        }
        if ([str3 hasSuffix:@"第"]) {
            NSLog(@"%@中包含后缀'第'", str3);
        }
        NSLog(@"%d", [str3 hasSuffix:@"串"]);
        //判断你输入的字符串里是否有[@"这是第%d个字符串"]里的东西,有的话返回1,没有返回0.
    
/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
    
    //  5. 判断子串在一个字符串中的范围
    NSString *string = @"一大波马宏达";
    NSRange range = [string rangeOfString:@"马宏达"];
    NSLog(@"location : %lu length: %lu",
          range.location, range.length);
    //从第range.location位开始,长度为range.length
    //NSLog(@"%lu",NSNotFound);//没有发现0
    NSString *s1 = @"么么哒,我了个草";
    NSRange r1 = [s1 rangeOfString:@"我"];
    NSLog(@"s1location : %lu s1length: %lu",
          r1.location, r1.length);
    if (r1.location == NSNotFound){
        NSLog(@"不包含该字符串");
    }else{
        NSLog(@"包含该字符串");
    }
    
/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
    
    //  6. 字符串截取
        //  6.1 截取前面部分
        //substringToIndex 从字符串的开头一直截取到指定位置
        NSString *s2  = @"你是我的小苹果";
        NSLog(@"%@",[s2 substringToIndex:5]);
    
        //  6.2 截取从一个位置的后部分开始
        //从3的位置开始截取
        NSLog(@"%@",[s2 substringFromIndex:3]);
    
        //  6.3 截取中间部分
        NSRange r2 = NSMakeRange(2, 4);//从2的位置开始截取4个字符串
        NSLog(@"%@",[s2 substringWithRange:r2]);
    
/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
    
    //  7. 拼接字符串
    NSLog(@"%@",[s2 stringByAppendingFormat:@"|这是%d拼接的串%@",1,@"很坑"]);//拼接一段现加字符串
    //Format 可以传好多参数,比如上面这个是格式串,可以吧一传进去
    NSLog(@"%@",[s2 stringByAppendingString:s1]);//拼接一个已创建好的字符串
    
    NSString * string2 = [s2 stringByAppendingFormat:@"无聊的%d下午,要%@",1,@"hi起来"];
    //把s2后面拼接上这个新的字符串,并把新的字符串保存在string2里面
    NSLog(@"%@",string2);
    
/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
    
    //  8. 替换字符串
    NSLog(@"~~~%@",[string stringByReplacingOccurrencesOfString:@"马宏达" withString:@"陈伯"]);
    //替换指定内容
    NSLog(@"~~~%@",[[s2 stringByReplacingOccurrencesOfString:@"小苹果" withString:@"小萌义"] stringByAppendingString:s1]);
    //替换s2指定内容之后,拼接s2
    NSString *string3 = @"坑爹的王尼玛爱吃大盘鸡";//创建string3
    NSString *string4 = [string3 stringByReplacingOccurrencesOfString:@"大盘鸡" withString:@"biangbiang面"];//把string3 里的指定内容替换保存在string4里面
    NSLog(@"%@", string4);//打印string4
    NSString *string5 = [string4 stringByReplacingOccurrencesOfString:@"坑爹的" withString:@"土豪"];//把string4 里的指定内容替换 保存在string5里面
    NSLog(@"%@", [string5 stringByAppendingFormat:@"无聊的%d下午,要%@",1,@"hi起来"]);//在string5后面拼接一段字符串
    
/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
    
    //  9. 字符串比较
    // -1,0,1 三个值
    // 输出比较值是否相等相等为1,不等为0;
    NSLog(@"%ld",[@"A" compare:@"B"]);
    NSLog(@"%ld",[@"A" compare:@"A"]);
    NSLog(@"%ld",[@"AA" compare:@"AB"]);
    NSLog(@"%ld",[@"B" compare:@"A"]);
    NSLog(@"%ld",[@"C" compare:@"B"]);
    NSLog(@"%d",[@"123" isEqualToString:@"123"]);

/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
    
    // 10.字符串和数值类型转换
        // 10.1 字符串转数值
        NSString * string6 = @"1234";
        NSString * string7 = @"3.14";
        NSLog(@"%f",[string7 floatValue]);//转float方法
        NSLog(@"%d",[string6 intValue]);//转int方法
        //2种方法
        // 10.2 数值转字符串
        NSString *strInt = [[NSString alloc]initWithFormat:@"%d",543];
        NSString *strFloat = [[NSString alloc]initWithFormat:@"%f",356.243];
        NSString *strChar = [[NSString alloc]initWithFormat:@"%c",'a'];
        NSString *strM = [[NSString alloc]initWithFormat:@"%@%@%@",strInt,strFloat,strChar];
        NSLog(@"%@",strM);

/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
    
    // 11. 大小写转换操作
    NSString *small = @"Title";
    NSLog(@"%@",[small uppercaseString]);//大写
    NSLog(@"%@",[small lowercaseString]);//小写
    NSString *text = @"est sgsd yhdfg ydj weff waer cweers wtgserg";
    NSLog(@"%@",[text capitalizedString]);//单词首字母大写
    

#pragma mark 可变字符串
    // 1.初始化
    NSMutableString * mString1 = [[NSMutableString alloc]initWithFormat:@"这是第%d个可变字符串",1];
    NSLog(@"%@",mString1);
    
/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
    
    // 2.拼接字符串
    NSString *sm1 = [[NSString alloc]initWithFormat:@"string1"];
    NSLog(@"%p",sm1);
    NSString *sm2 = [sm1 stringByAppendingString:@"string2"];
    NSLog(@"%p %@",sm1 , sm2);
    NSLog(@"%p", sm2);
    [mString1 appendString: @"string2"];
    NSLog(@"%@",mString1);
    
/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
    
    // 3.可变字符串的处理
        // 3.1插入字符串 在指定位置之后插入字符串
        [mString1 insertString:@"haah" atIndex:2];
        NSLog(@"%@",mString1);
    
        // 3.2删除字符串 在指定位置删除指定长度的字符串
        [mString1 deleteCharactersInRange:NSMakeRange(2, 2)];
        NSLog(@"%@",mString1);
    
        // 3.3替换字符串 把指定位置的指定长度的字符串替换
        [mString1 replaceCharactersInRange:NSMakeRange(2,4) withString:@"我们写的"];
        NSLog(@"%@", mString1);
    
#pragma mark NSRange 和 NSNotFound 的用法
    // 通常来说 NSRange NSNotFound 都是和 OC中的容器类 配合使用的
    // 在上面的描述过程中我使用到了 NSRange 和 NSNotFound
    // NSRange是一个结构体,其中location是一个以0为开始的index,length是表示对象的长度
    
    // NSRange详解:
    NSString * expStr = @"python manage.py startapp app-name";
    NSRange expRag1 = NSMakeRange (25, 3);
    // 1。打印指定range的字符串
    NSLog (@" %@", [expStr substringWithRange:expRag1]);
    
    // 2。搜索字符串:
    NSRange expRag2 = [expStr rangeOfString:@"startapp"];
    // 找到名为"startapp"的字符串
    if (expRag2.length > 0)
        NSLog(@"%@", NSStringFromRange(expRag2));
    
    // ⭐️NSStringFromRange方法,把NSRange返回一个NSString。
    // ⭐️NSRangeFromString方法,把NSString转换为NSRange
    
    // 从后向前反向搜索字符串:
    NSRange expRag3 = [expStr rangeOfString:@"ar" options:NSBackwardsSearch];
    // What did we find
    if (expRag3.length > 0)
        NSLog(@"%@", NSStringFromRange(expRag3));
    
    // 关于搜索的条件这一自己点击进入查看以下是枚举
    //    NSCaseInsensitiveSearch
    //    NSLiteralSearch
    //    NSBackwardsSearch
    //    NSAnchoredSearch
    //    NSNumericSearch
    //    NSDiacriticInsensitiveSearch
    //    NSWidthInsensitiveSearch
    //    NSForcedOrderingSearch
    
    // NSNotFound通常用在判断字符串中是否有指定的东西,NSNotFound表示没有发现、不存在。
    // 例:
    NSString * astring = @"伟大的我废果然,我了个草";
    NSRange arange = [astring rangeOfString:@"我"];
    NSLog(@"s1location : %lu s1length: %lu",arange.location, arange.length);
    if (r1.location == NSNotFound){
        NSLog(@"不包含该字符串");
    }else{
        NSLog(@"包含该字符串");
    }