zoukankan      html  css  js  c++  java
  • 可变字符与不可不可变字符串的心得

    字符串从我接触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     }

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

  • 相关阅读:
    84. Largest Rectangle in Histogram (Solution 2)
    84. Largest Rectangle in Histogram (Solution 1)
    73. Set Matrix Zeroes
    【JavaScript】Symbol 静态方法
    【JavaScript】Date
    【JavaScript】Math
    725. Split Linked List in Parts把链表分成长度不超过1的若干部分
    791. Custom Sort String字符串保持字母一样,位置可以变
    508. Most Frequent Subtree Sum 最频繁的子树和
    762. Prime Number of Set Bits in Binary Representation二进制中有质数个1的数量
  • 原文地址:https://www.cnblogs.com/YinShuZhi/p/4922965.html
Copyright © 2011-2022 走看看