zoukankan      html  css  js  c++  java
  • iOS不可变字符串的所有操作

    可以直接复制代码即可运行看看结果,方便理解

    //NSString

    //OC字符串不能用printf输出

    //但是遗憾的是OC没有一个从终端读取数据的方式,需要使用scanf读取C字符串然后转换成OC的字符串

        

    #pragma mark 字符初始化

    //创建一个不可变字符串str1 值是常量字符串

    //打印字符串用%@来打印

    //%@还可以打印对象

     NSString * str1 = @"常量字符串";

        NSLog(@"%@",str1);

     //用字符串创建字符串

    NSString * str2 = [[NSString alloc]initWithString:str1];

        NSLog(@"%@",str2);

      //用字符串的格式化来初始化创建一个字符串

    //API

    NSString * str3 = [[NSString alloc]initWithFormat:@"%@%d%f",@"abc",123,12.3];

        NSLog(@"%@",str3);

    //用字符串的类方法创建一个格式化字符串

    NSString * str4 = [NSString stringWithFormat:@"%@%d",@"def",456];

        NSLog(@"%@",str4);

        

    #pragma mark 将C语言字符串转换成OC字符串

        //OC中只要遇到字符串编码的问题均为NSUTF8StringEncoding

        //万国码unicode

        

    NSString * str5 = [[NSString alloc]initWithCString:"ABC" encoding:NSUTF8StringEncoding];

        NSLog(@"%@",str5);

        char * p = "abc";

    NSString  * str5_1 = [[NSString alloc]initWithUTF8String:p];

        NSLog(@"%@",str5_1);

    //类方法转换C字符串

    NSString * str5_2 = [NSString stringWithCString:p encoding:NSUTF8StringEncoding];

    NSString * str5_3 = [NSString stringWithUTF8String:p];

        NSLog(@"%@ %@",str5_2, str5_3);

    #pragma mark 字符串的比较

    //判断字符串中不能是用 == 判断

     

    //在设计NSString时,内部应用了一种优化的思想, 享元设计思想

    //在设计字符串的时候,会有一个缓冲池,只要缓冲池中有当前字符串,那么就会返回当前字符串的地址,不会再去重复创建,因为大量的创建字符串会消耗内存,所以提过了这种方式,当我们是用StringWithFormat的时候回重新创建一个新的字符串,所以不能用 == 号进行判断

    //在判断字符串中 == 判断的是字符串的指针地址是否相等,存在一定判断错误的风险.

    //在实际开发中不能是用== 而是使用专门判断字符串想的方法 isEqualToString

     NSString * str6 = @"ab";

     NSString * str6_1 = @"你好";

    //接收返回值

    //BOOL isOK = [str6 isEqualToString:str6_1];

        if([str6 isEqualToString:str6_1]){

            NSLog(@"%@ == %@",str6,str6_1);

        }else{

            NSLog(@"%@ != %@",str6,str6_1);

        }

    //获取字符串的长度

    //在NSString中 任何字母,数字,中文字符的长度都是1

    NSLog(@"%@的长度是%ld",str6,[str6 length]);

        //@"abcde";

        //字符串的位置是从0开始计数的

        //一个汉字占2个字节

        NSString * str7 = @"xcode";

        //获取单个字符

        //unichar 是两个字节的 char

        //字符串的位置是从0开始计数的

       unichar newChar = [str7 characterAtIndex:4];

      NSLog(@"newChar = %c",newChar);

       //NSString中有汉字 "%C"

        unichar hanzi = [str6_1 characterAtIndex:0];

        NSLog(@"hanzi = %C",hanzi);

        //比较两个字符串的大小

        NSString * str8 = @"yang chang";

        NSString * str8_1 = @"B duan";

    NSComparisonResult result =[str8 compare:str8_1];

        if (result == NSOrderedSame) {

            NSLog(@"%@ = %@",str8 ,str8_1);

            //升序 前者小 后者大

        }else if (result == NSOrderedAscending){

            NSLog(@"%@ < %@",str8,str8_1);

            //降序 前者大 后者小

        }else if(result == NSOrderedDescending){

            NSLog(@"%@ > %@",str8,str8_1);

        }

    #pragma mark 字符串的拼接

        NSString * str9 = @"北京北京";

        NSString * str9_1 = @"我最帅";

        //str9_1拼接到str9的后面

        NSString * str9_2 =  [str9 stringByAppendingString: str9_1];

        NSLog(@"%@",str9_2);

        //格式化拼接 在初始化字符串的同时进行拼接

        str9_2 = [str9 stringByAppendingFormat:@"%@%d%f",str9_1,520,520.0];

        NSLog(@"%@",str9_2);

        //如何遍历字符串中每一个字符

        NSString * str10 = @"abcdefgh";

        for(int i = 0; i<[str10 length];i++){

           char c = [str10 characterAtIndex:i];

            NSLog(@"%d = %c ",i,c);

        }

    #pragma mark 字符串的查找

    NSString * str11 = @"你好北京123";

        //在当前字符串str11中查找123这个字符串,将他的位置和长度返回

    NSRange range = [str11 rangeOfString:@"123"];

    NSLog(@"loc = %lu , len = %lu",range.location,range.length);

        /**

         typedef struct _NSRange {

         NSUInteger location;//这个是位置不是长度!!!!!

         NSUInteger length;//这个是长度不是位置!!!

         } NSRange;

     

         */

        //判断当前字符串是否存在?

        if(range.location != NSNotFound){

            NSLog(@"123在%@中位置是%lu",str11,range.location);

        }else{

            NSLog(@"123不再字符串");

        }

        

        if(range.length != 0){

            NSLog(@"123在%@中长度是%lu",str11,range.length);

        }else{

            NSLog(@"不在");

        }

        

      

    #pragma mark 字符串的截取

      NSString * str12 = @"北京欢迎您,iOS入门还是比较容易的ios";

    //是从字符串str12中截取出一个子串(从原串第0个字符开始截取到传入得[值-1]的位置)

        NSString * str12_1 = [str12 substringToIndex:5];

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

        //字符串str12中截取指定位置6到字符串的结尾

        NSString * str12_2 = [str12 substringFromIndex:6];

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

        //通过已知的范围range在原字符串中查找子串

        //第一个是位置

        //第二个是长度

        NSRange range2 = {2,4};

        NSLog(@"%@",[str12 substringWithRange:range2]);

        //将原串str12指定范围内的字符用@"努力学习"替换

        NSString * str12_3 = [str12 stringByReplacingCharactersInRange: NSMakeRange(0, 9) withString:@"努力学习"];

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

    #pragma mark 判断前缀和后缀

        

       NSString * str13 = @"http://www.baidu.com";

        //检查某个字符串是否已指定的字符串开始(前缀)

        if([str13 hasPrefix:@"http"]){

            NSLog(@"是");

        }else{

            NSLog(@"不是");

        }

         //检查后缀

        if([str13 hasSuffix:@"com"]){

            NSLog(@"是");

        }else{

            NSLog(@"不是");

        }

    #pragma mark 字符串的转换

        NSString * str14 = @"abc";

        //将str14转换成大写

        str14 = [str14 uppercaseString];

        NSLog(@"%@",str14);

        //将str14转换成小写

        str14 = [str14 lowercaseString];

        NSLog(@"%@",str14);

        //将基本类型转换型字符串

    //    stringWithFormat

    //    initWithFormat

        //将字符串转换成基本数据类型

        NSString * str14_1 = @"1";

        int a = [str14_1 intValue];

        //floatValue

        //doubleValue

        NSString * str14_2 = @"YES";

        BOOL isOK = [str14_2 boolValue];

        //boolValue

        NSLog(@"%d",a);

        //@"1"

    #pragma mark 字符串的拆分

    NSString * str15 = @"a,b,c,d";

     //用指定的分隔符将字符串才分成数组

     //is+-n*/io=pp

      NSArray * array =  [str15 componentsSeparatedByString:@","];

        NSLog(@"%@",array);

    //    for (int i= 0; i<[array count];i++) {

    //        NSLog(@"%@",[array objectAtIndex:i]);

    //    }

    #pragma mark 从指定文件读取字符串

        //将文件的内容读入到字符串中

        //第一个参数是文件的路径

        //第二个字符编码

        //第三个错误信息

    NSString * str16 = [NSString stringWithContentsOfFile:@"/Users/hhh/Desktop/github.txt" encoding:NSUTF8StringEncoding error:nil];

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

        //从网上读取文件内容到字符串中

        //第一个 网址

        //第二个 字符编码

        //第三个 错误信息

        NSString * str17 = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://10.0.178.5/resource/github.txt"]encoding:NSUTF8StringEncoding error:nil];

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

       

        //写入文件

        //第一个是目标文件路径

        //第二个是否写入缓存(原子)

        //第三个编码

        //第四个错误信息

        //如果没有文件,那么就会创建出一个新的文件,如果原文件已经存在,那么会覆盖原文件

        [str12 writeToFile:@"/Users/hhh/Desktop/aa.txt"  atomically:YES encoding:NSUTF8StringEncoding error:nil];

  • 相关阅读:
    D 最熟悉的陌生人 (纪念当年就读的梅州市江南高级中学)
    C 最熟悉的陌生人 (纪念当年就读的梅州市江南高级中学)
    B 最熟悉的陌生人 (纪念当年就读的梅州市江南高级中学)
    A 最熟悉的陌生人 (纪念当年就读的梅州市江南高级中学)
    奥秘月球背面
    嫦娥二号月球图片
    外星人就在月球背面
    月球背面
    分享一个绿色版本 sql server 查询器,
    java 8 原版 api 下载地址,
  • 原文地址:https://www.cnblogs.com/sunfuyou/p/5900783.html
Copyright © 2011-2022 走看看