OC基础:Foundation框架之NSString和NSMutableString

 内容简介: Foundation框架之NSString和NSMutableString
 
第一部分》》》》NSString的使用
      基本用法
         //1. 创建字符串
         //1.1 常规创建,创建一个空的字符串
       
  // 这样创建的字符串几乎没用,因为它们是空的而且还不可变
       
  //alloc 创建
       
  NSString  *str1 = [[ NSString  alloc ]  init ];
       
  NSLog ( @"str1 is:%@" ,str1);
       
  // 用类方法创建
       
  NSString  *str2 = [ NSString  string ];
       
  NSLog ( @"str2 is:%@" ,str2);
       
       
  //1.2 格式化创建
       
  //alloc 创建
       
  NSString  *str3 = [[ NSString  alloc ]  initWithFormat : @"wlecome" ];
       
  NSLog ( @"str3 is:%@" ,str3);
       
  // 类方法创建
       
  NSString  *str4 = [ NSString  stringWithFormat : @"beijng" ];
       
  NSLog ( @"str4 is:%@" ,str4);
       
       
  //1.3 快速创建
       
  NSString  *strtemp =  @"strtemp" ;
       
  NSLog ( @"strtemp is %@" ,strtemp);
       
       
  //1.4 下面两种方法已经不推荐使用
       
  // 因为它们较为繁琐,且效果和快速创建是一样的,已经被弃用
       
  //NSString *str222 = [[NSString alloc] initWithString:@"222"];
       
  //NSString *str333 = [NSString stringWithString:@"333"];
       
       
  //1.5 特别注意
       
  // 这样并没有修改字符串,而是修改了指针的指向
        str1 =
@"hello world" ;
       
  NSLog ( @"str1 is %@" ,str1);

       
       
       
  //2. 字符串的比较
       
  NSString  *str6 =  @"str6" ;
       
  NSString  *str7 =  @"str6" ;
       
  //2.1 比较是不是同一个对象
       
  if ([str6  isEqualTo :str7]){
           
  NSLog ( @"str6 str7 是同一个对象 " );
        }
else {
           
  NSLog ( @" 不是同一个对象 " );
        }
         //2.2 比较字符串的指针
       
  BOOL  bool67 =(str6 == str7);
       
  if (bool67){
           
  NSLog ( @"str6   str7 是同一个字符串 " );
        }
else {
           
  NSLog ( @"str6 str7 不是同一个字符串 " );
        }
        //2.3比较字符串内容
         if  ([str6  isEqualToString :str7]){
           
  NSLog ( @"str7  str6  字符串内容相同 " );
        }
else {
           
  NSLog ( @"str6 str7 字符串内容不相同 " );
        }
        //2.4比较字符串的大小
         // 使用 NSComparisonResult 接受结果
       
  // 其原理是使用了枚举
       
  //typedef NS_ENUM(NSInteger, NSComparisonResult)
       
  //{NSOrderedAscending = -1L, NSOrderedSame, NSOrderedDescending};
       
  NSString  *str8 =  @"see you tommorrow" ;
       
  NSString  *str9 =  @"see you chen" ;
       
  NSComparisonResult  result = [str8  caseInsensitiveCompare :str9];
       
  if (result == NSOrderedAscending ){
           
  NSLog ( @" 升序 " );
        }
else  if (result ==  NSOrderedSame ){
           
  NSLog ( @" 相等 " );
        }
else  if (result ==  NSOrderedDescending ){
           
  NSLog ( @" 降序 " );
        }
       
       
       
       
  //3. 求字符串的长度 , 使用 length
       
  NSInteger  length = [str8  length ];
       
  NSLog ( @"str8 length is %ld" ,length);
       
       
       
       
  //4. 字符串转换的问题
       
  // 转为大写 :uppercaseStrig
       
  NSString   *str8upper = [str8  uppercaseString ];
       
  NSLog ( @"str8upper is %@" ,str8upper);
       
  // 转为小写 :lowercaseString
       
  NSString  *str8lower = [str8  lowercaseString ];
       
  NSLog ( @"str8lower is %@" ,str8lower);
       
  // 首字母大写 :capitalzedString
       
  NSString  *str8capitalized =[str8  capitalizedString ];
       
  NSLog ( @"strcapitalized is %@" ,str8capitalized);
   
       
       
  //5. 字符串和基本数据类型的转换
       
  //5.1 转为整型
       
  NSString  *str10 =  @"123" ;
       
  NSInteger  integervalue = [str10  integerValue ];
       
  NSLog ( @"integervalue is %ld" ,integervalue);
       
  //5.2 转为浮点型
       
  NSString  *str11 =  @"1234.1" ;
       
  CGFloat   floatvalue = [str11  doubleValue ];
        NSLog(@"floatvalue is %f",floatvalue);
        //5.3z换为布尔型
         BOOL  boolvalue = [str10  boolValue ];
       
  NSLog ( @"boolalue is %d" ,boolvalue);
       
  // 特别注意
       
  // 如果赋值的字符串是 false 或者是 0 ,结果是 0
       
  // 如果赋值的字符串是 true 或者其他不为 0 的字符串,结果是 1
       
  NSString  *truth =  @"01" ;
       
  BOOL  value = [truth  boolValue ];
       
  NSLog ( @"value is %d" ,value);

       
       
  //6. 从键盘输入赋值一个字符串
       
  // 使用字符指针来引用一个字符串
       
  char  *p =  malloc (20); // 开辟内存
       
  NSLog ( @" 请输入字符串: " );
       
  scanf ( "%s" ,p);
       
  NSString  *input = [ NSString  stringWithCString :p encoding : NSUTF8StringEncoding ];
        NSLog(@"经过输入得到的字符串是:%@",input);

        用法补充

             //1. 字符串截取
       
  //1.1 从开始截取到最后
        NSString *str1 =
  @"hello world" ;
        NSString *str2 =[str1 substringFromIndex:1];
        NSLog(
@"str2 is %@" ,str2);
       
  //1.2 截取下前面的字符,不包括下标
       
  // 包括最后一位的截取是 11 ,如果是 12 就会数组越界
        NSString *str3 = [str1 substringToIndex:11];
        NSLog(
@"str3 is %@" ,str3);
       
  //1.3 使用结构体截取
       
  // 从下标 2 位开始截取,截取 6
        NSRange range ={2, 6};
        NSString *str4 = [str1 substringWithRange:range];
        NSLog(
@"str4 is %@" ,str4);
       
  // 输出一个结构体
        NSLog(
@"range is %@" ,NSStringFromRange(range));
       
       
         //2. 获取字符
       
  // 通过下标取字符
        NSString *str5 =
  @"I love you ,China" ;
       
  char  c = [str5  characterAtIndex:3];
        NSLog(
@"str5  中下标为 3 的字符是 %c" ,c);
       
       
       
  //3. 通过特殊字符分隔字符串
        NSString  *str6 =
  @" 天平座,水瓶座,双子座,白羊座 " ;
        NSArray *array = [str6 componentsSeparatedByString:
@"," ];
        NSLog(
@" 输出这个数组是 %@" ,array);
       
       
       
  //4. 字符串的拼接
        NSString *str7 =
  @"take me" ;
        NSString *str8 =
  @"to your heart" ;
       
  //4.1 stringWithFormat
        NSString *str9 = [NSString stringWithFormat:
@"%@ %@" ,str7,str8];
        NSLog(
@"str9 is %@" ,str9 );
       
  //4.2 stringByAppendingString
        NSString *str10 = [str7 stringByAppendingString:str8];
        NSLog(
@"str10 is %@" ,str10);
       
  //4.3 stringbyAppendingFormat
        NSString *str11 = [str7 stringByAppendingFormat:
@" %@" ,str8];
        NSLog(
@"str11 is %@" ,str11);
       
  // 字符串拼接扩展一 , 自动增加了 "/"
        NSString *str12 = [str7 stringByAppendingPathComponent:str8];
        NSLog(
@"st12 is %@" ,str12);
       
  // 字符串拼接扩展二,自动增加了 “."
        NSString *str13 = [str7 stringByAppendingPathExtension:str8];
        NSLog(
@"str13 is %@" ,str13);
       
       
       
  //5. 字符串中的类型转换
        NSString *truth =
  @"false" ;
       
  BOOL  value = [truth boolValue];
        NSLog(
@"value is %d" ,value);
       
       
       
       
  //6. 字符串查找
       
  // 指定一个字符串,然后在原字符串中查找,返回的是一个结构体
        NSString *str14 =
  @"my hometown is zhumadian!" ;
        NSString *str15 =
  @"zhumadian" ;
        NSRange range2 = [str14 rangeOfString:str15];
       
  // 输出结构体
        NSLog(
@"range2 is %@" ,NSStringFromRange(range2));
       
  // 通过获取结构体内容的方式输出
        NSLog(
@"range2.location is%ld,range2 length is %ld" ,range2.location,range2.length);
       
  // 通过判断的方式,查看是否找到了
       
  if (range2.location!= NSNotFound){
            NSLog(
@" 找到了字符串 " );
        }
else {
            NSLog(
@" 没有找到字符串 " );
        }
       
  // 在枚举中, NSnotFound 被定义为 NSIntegerMax, 即最大值
       
  // 输出的值是: 9223372036854775807
        NSLog(
@" 输出 NSNotFound %ld" ,NSNotFound);
       
       
       
       
  //7. 字符串替换
       
  //7.1 使用已有字符串替换原字符串中的指定部分
       
  //StringByReplacingOccurrencesOfString
        NSString *str16 =
  @"the way to success" ;
        NSString *str17 = [str16 stringByReplacingOccurrencesOfString:
@"success"  withString: @"dream" ];
        NSLog(
@" 替换后得到字符串 str17 %@" ,str17);
       
  //7.2 使用结构体替换
       
  //stringByReplacingCharactersInRange
        NSRange range3 = {3, 6};
        NSString *str18 =
  @"abcdefghijk" ;
        NSString *str19 = [str18 stringByReplacingCharactersInRange:range3 withString:
@"ZS" ];
        NSLog(
@"str19 is %@" ,str19);
 

第二部分》》》》NSMutableString的使用

                   //NSMutableString NSString 的子类
         //NSMutbaleString 是可变字符串,可以修改字符串的内容
       
       
  //1. 创建可变字符串
       
  // 注意:不可以使用快速创建的方式
       
  //1.1NSMutableString 继承与 NSString ,同样通过 alloc 和类方法可以创建空的字符串
       
       
  //1.2 普通方法创建
       
  NSMutableString  *str1  =[[ NSMutableString  alloc ] initWithString : @"welcome" ];
       
  NSLog ( @"str1 is %@" ,str1);
       
  NSMutableString  *str2 = [ NSMutableString  stringWithString : @"it is ok!" ];
       
  NSLog ( @"str2 is %@" ,str2);
       
  //1.3 通过格式化的方法来创建
       
  NSMutableString  *str3 =[[ NSMutableString  alloc ]  initWithFormat : @"hello" ];
       
  NSLog ( @"str3 is %@" ,str3);
       
  NSMutableString  *str4 = [ NSMutableString  stringWithFormat : @"world" ];
       
  NSLog ( @"str4 is %@" ,str4);
       
       
  //2. 插入字符串
       
  // 使用 insertString
        [str4
  insertString : @"hehe"  atIndex :0];
       
  NSLog ( @"str4 0 位置插入字符串后: str4 = %@" ,str4);
  
       
  //3. 删除字符串
       
  // 首先构建好结构体
       
  //deleteCharactersInRange
       
  NSRange  range = {1,2};
        [str4
  deleteCharactersInRange :range];
       
  NSLog ( @"str4 删除字符串后得: str4 = %@" ,str4);
       
         //4. 拼接字符串,是在本身上添加
       
  //4.1 使用 appendString
        [str4
  appendString : @"ZS" ];
       
  NSLog ( @" 使用 appendString 追加: str4=%@" ,str4);
       
  int  index =90;
       
  //4.2 使用 appendFormat
        [str4
  appendFormat : @"%d" ,index];
       
  NSLog ( @" 使用 appendFormat 添加: str4=%@" ,str4);
       
         //5. 替换字符串
       
  NSRange  range2 ={2,5};
        [str4
  replaceCharactersInRange :range2  withString : @" 替换 " ];
        NSLog(@"替换字符串后str4 = %@",str4);



第三部分》》》关于字符串的练习


    // 题目:去掉字符串 “123-456-789” 中间的 ‘-’, 得到新数组
   
  // 第一种方法
   
  // 分别截取获取数字,得到三个新数组,然后拼接
   
  NSString  *str =  @"123-456-789" ;
       
  NSString  *str1 = [str  substringWithRange : NSMakeRange (0, 3)];
       
  NSString  *str2 = [str  substringWithRange : NSMakeRange (4, 3)];
       
  NSString  *str3 =[str  substringWithRange : NSMakeRange (8, 3)];
       
  NSString  *str4 = [str1  stringByAppendingFormat : @"%@%@" ,str2,str3];
       
  NSLog ( @" 方法一得到字符串: %@" ,str4);
       
   
  // 第二种方法
   
  // 替换的思想,直接把 “-” 替换掉
       
  NSString  *str5 = [str   stringByReplacingOccurrencesOfString : @"-" withString : @"" ];
       
  NSLog ( @" 方法二得到字符串: %@" ,str5);
       
   
  // 第三种方法
   
  // 先分割得到数组,再组装拼接
       
  NSArray  *array=[str  componentsSeparatedByString : @"-" ];
       
  NSString  *str6 =[array  componentsJoinedByString : @"" ];
       
  NSLog ( @"str7 is %@" ,str6);

你可能感兴趣的:(iOS,OC)