• 可变字符与不可不可变字符串的心得


    字符串从我接触OC开始就在用它,但是至始至终都没整明白这是个什么东东! 现在学到了这一块儿的知识,经过两天的学习,逐渐的理清楚了一些关于Nsstring和NsMutablestring的一些问题!现在我把它给梳理出来了,供各位大神们知道!

    第一个是不可变字符串Nsstring的介绍:

    首先是不可变字符串的创建

     1 //1、不可变字符串的创建
     2         //快速创建
     3         NSString *str = @"这是不可变数组的快速创建";
     4         NSLog(@"%@",str);
     5         //通过allock格式化字符串创建
     6         int a = 100 ;
     7         NSString *str1 = [[NSString alloc]initWithFormat:@"%d",a];
     8         NSLog(@"这是通过allock格式化字符串创建:%@",str1);
     9         //通过格式化符创建
    10         NSString *str2 = [NSString stringWithFormat:@"这是通过格式化符创建的字符串,属于类方法"];
    11         NSLog(@"%@",str2);

    第二个是不可变字符串的方法

      1 //1、字符串比较
      2         
      3         NSString *str3 = [NSString stringWithFormat:@"abc"];
      4         NSString *str4 = [NSString stringWithFormat:@"abc"];
      5         if ((str3 = str4)) {
      6             NSLog(@"%p %p",str4,str3);//比较的字符串地址
      7         }
      8   //Xcode7.1中的一个bug 输出结果是两个字符串的地址相同 理论上两个字符串的地址是不一样的
      9         
     10         
     11 //2、字符串内容的比较
     12         int c = 100;
     13         int c1 = 200;
     14         NSString *str5 = [[NSString alloc]initWithFormat:@"%d",c];
     15         NSString *str6 = [[NSString alloc]initWithFormat:@"%d",c1];
     16         BOOL isSame =[str5 isEqualToString: str6 ];
     17         if (isSame) {
     18             NSLog(@"这是字符串内容的比较");
     19         }
     20         
     21 //3、比较字符串大小
     22         NSString *str7 = [NSString stringWithFormat:@"xiao"];
     23         NSString *str8 = [NSString stringWithFormat:@"qiang"];
     24         NSComparisonResult result = [str7 caseInsensitiveCompare:str8];
     25         if (result ==NSOrderedSame) {
     26             NSLog(@"字符串大小比较:一样");
     27         }else if (result == NSOrderedAscending){
     28             NSLog(@"字符串大小比较:升序");
     29         
     30         }else if (result == NSOrderedDescending)
     31             NSLog(@"字符串大小比较:降序");
     32         
     33 //4、输出字符串长度
     34         NSString *str9 = [NSString stringWithFormat:@"亲爱的,我爱你!"];
     35         long len =[str9 length];
     36         NSLog(@"输出字符串长度为:%ld",len);
     37         
     38 //5、大小写转换
     39         NSString *str10 = [NSString stringWithFormat:@"i love Keke"];
     40         NSLog(@"全部变成大写字母%@",[str10 uppercaseString]);
     41         NSLog(@"全部变成小写字母%@",[str10 lowercaseString]);
     42         NSLog(@"首字母大写%@",[str10 capitalizedString]);
     43         
     44 //6、转换为基本数据了类型
     45         NSString *str11 = [NSString stringWithFormat:@"15"];
     46         int j = [str11 intValue];//整型转换
     47         NSLog(@"由nsstring转换成整型%d",j);
     48         NSString *str12 = [NSString stringWithFormat:@"13"];
     49         float k = [str12 floatValue];
     50         NSLog(@"由nsstring转换成浮点型%.2f",k);
     51         NSString *str13 = [NSString stringWithFormat:@"10"];
     52         BOOL flag = [str13 boolValue];
     53         NSLog(@"由nsstring转换成BOOL型%d",flag);
     54         
     55         
     56  //7、字符串分割
     57         NSString *str14 = [NSString stringWithFormat:@"i,love,keke"];
     58         NSArray *array = [str14 componentsSeparatedByString:@","];
     59         NSLog(@"字符串的分割%@",array);//以" , "为分割点对字符串分割,在分割点后自动输出换行
     60         
     61 //8、访问指定字符串位置
     62         NSString *str15 = [NSString stringWithFormat:@"nishiwodexiaoyaxiaopingguo"];
     63         char car = [str15 characterAtIndex:10];
     64         NSLog(@"访问指定字符串位置%c",car);
     65         
     66 //9、字符串的截取输出
     67         NSString *str16 = [NSString stringWithFormat:@"nishiwodexiaoyaxiaopingguo"];
     68         NSString *string16 =[str16 substringFromIndex:10];
     69         NSLog(@"从指定位置开始截取至末尾%@",string16);//从指定位置开始截取,直到字符串末尾
     70         
     71         // 9.2
     72         NSString *str17 = [NSString stringWithFormat:@"nishiwodexiaoyaxiaopingguo"];
     73         NSString *string17 = [str17 substringToIndex: 15 ];
     74         NSLog(@"从开头截取至指定位置,不包含该位置%@",string17);//从开头开始截取至指定位置,但是不包括该位置
     75         //9.2
     76         NSString *str18 = [NSString stringWithFormat:@"nishiwodexiaopingguo"];
     77         NSRange rang = NSMakeRange(0, 5);
     78         NSString *str19 = [str18 substringWithRange:rang];
     79         NSLog(@"指定范围截取%@",str19);// 截取指定范围的字符
     80         
     81         
     82 //10、字符串的拼接
     83         //第一种拼接实现方式
     84         NSString *str20 =[NSString stringWithFormat:@"Hello"];
     85         NSString *str21 =@"world";
     86         NSString *str22 =[str20 stringByAppendingFormat:@"%@",str21];
     87         NSLog(@"第一种拼接实现方式%@",str22);
     88         //第二种拼接实现方式
     89         NSString *str23 = [str20 stringByAppendingString:str21];
     90         NSLog(@"第二种拼接实现方式%@",str23);
     91         //第三种拼接方式
     92        NSString *str24 = [NSString stringWithFormat:@"%@ %@",str20,str21];
     93         NSLog(@"第三种拼接实现方式%@",str24);
     94         
     95         
     96 //11、查找
     97         NSString *str25 = @"123456@qq.com";
     98         NSString *str26 = @"q.com";
     99         NSRange range = [str25 rangeOfString: str26];
    100         if (range.location != NSNotFound ) {
    101             NSLog(@"已找到");//查找想对应的字符
    102         }
    103         
    104 //12、替换
    105         NSString *str27 = [str25 stringByReplacingOccurrencesOfString:@"q.com" withString:@"163.com"];
    106         NSLog(@"替换字符%@",str27);
    107       

    在第十一个方法中,查找字符串  :

    1 NSString *str25 = @"123456@qq.com";
    2         NSString *str26 = @"q.com";
    3         NSRange range = [str25 rangeOfString: str26];
    4         if (range.location != NSNotFound ) {//NSNotFound 意为没有找到的意思,两个否定加起来就是肯定的意思   rang.location !=NSNotFound  意为找到了
    5             NSLog(@"已找到");//查找想对应的字符
    6         }

    接下来是可变字符串

    首先,同样是字符串的创建

    1 可变数组的创建
    2         NSMutableString *mstr = [NSMutableString stringWithString:@"这是可变数组的创建"];
    3         NSLog(@"%@",mstr);
    4         //似乎只有这一种创建方式
    5         

    第二,既然是可变数组那么肯定有其可变的地方

     1 //可变数组的  插入 删除 追加字符串
     2         NSMutableString *str28 = [NSMutableString stringWithFormat:@"World"];
     3         [str28 insertString:@" Hello" atIndex:0];
     4         NSLog(@"在可变数组中的指定位置前添加字符%@",str28);
     5         
     6         NSMutableString *str29 = [NSMutableString stringWithFormat:@"My world"];
     7         NSRange rang1 = NSMakeRange(0, 3);
     8         [str29 deleteCharactersInRange:rang1];
     9         NSLog(@"删除指定范围的字符串%@",str29);
    10         
    11         NSMutableString *str30 = [NSMutableString stringWithFormat:@"字符串"];
    12         [str30 appendString:@"追加"];
    13         NSLog(@"在字符串后面追加字符%@",str30);
    14     }

    以上是关于字符串的浅谈,仅仅只是一些残缺不全的知识点整合,有不足之处,求大神指点出来

  • 相关阅读:
    STL标准库algorithm中remove()函数的一个小注意事项
    关于 mem_fun_ref 和 bind2nd的疑问
    记录昨日程序调不通的解释
    复习几个C++概念:声明与定义、传值与拷贝构造、初始化和赋值
    对stl map 赋值添加元素的疑惑 求解(管理员让这个帖子多见会人吧~~谢谢啦!)
    摘抄书上一个逆序字符串的例子(可根据不同的符号,比如*&,.;来拆分单词)
    “指向指针的引用”小例子:忽然豁然开朗~
    论文 “tracking evolving communities in large linked networks” 中不懂的问题和知识总结
    [wp7软件]wp7~~时间日程 软件大全! 集合贴~~~
    [wp7游戏]wp7~~超级血腥类游戏~~集合贴~~
  • 原文地址:https://www.cnblogs.com/YinShuZhi/p/4922965.html
Copyright © 2020-2023  润新知