Objective-C学习- 字符串类型 NSString 和 NSMutableString

  相比于C语言来讲,一般面向对象的语言都有一种类型来专门的处理字符串类型,如C++的string,JAVA的String..  Objectiver-C 自然也有种类型来专门处理字符串,叫做NSString。

  

 

 

  Objective-C中的字符串也分为两种:NSString(不可变字符串),NSMutableString(可变字符串),NSMutableString类是NSString的一个子类。

  注:Objective-C中的字符串 都需要用@"内容",前边必须要用一个@

  (1)NSString--------不可变字符串

    

  //初始化   

     NSString *str1 = @"123"//直接赋值

 

           NSString *str2 = [[NSString alloc] initWithFormat:str1];//根据字符串str1来创建字符串

      

    /*

       这种方法也是根据字符串str1来创建字符串

       但是与上方的定方法不同的是:用 stringWithFormat 方法创建的字符串被称为 临时字符串

       因为用这种方法创建的字符串会随时释放,在以后的iOS中,很难控制

       */   

      NSString *str3 = [NSString stringWithFormat:str1];//这表示字符串str3是根据str1建立的,相当于把str1的值赋给str3

      

   将C语言的字符数组或者字符指针转换成NSString

      /*

       C语言中的字符数组char[]或者字符指针char *转变成 NSString

       方法是: [[NSString alloc] initWithUTF8String:(const char *)]

      */  

      NSString *str4 = [[NSString alloc] initWithUTF8String:p];//将字符指针p转换成NSString

    

   //字符串比较是否相等

      BOOL b = [str4 isEqualToString:str1];//返回YES(1)   NO(0)

 

      //字符串比较大小

    /*

       方法是:str1 compare:(NSString *),返回类型是 NSComparisonResult

       需要用NSComparisonResult来接收结果,该类型是一个枚举

       枚举的值是:

       NSOrderedSame:相等

       NSOrderedAsend:小于

       NSOrderedDescending:大于

       */

      NSComparisonResult result = [@"123" compare:@"123"]; //这是比较 字符串@“123” 和 字符串@“123”的大小

    

       //字符串中查找子串

    /*

       方法:str5 rangeOfString:(NSString *)

       该方法返回类型是 NSRage,该类型是一个结构体

       结构体的元素:

       location 表示位置

       length 表示长度

       */

    //下例表示在str5中查找子串@“my”,并且返回一个NSRange类型,从而获取位置以及长度

      NSString *str5 = @"This is my Objective-C Project";

      NSRange range = [str5 rangeOfString:@"my"];

      int location = (int)range.location;    //location是接受@”my“str5中的位置(实际是下标)    

      int length = (int)range.length;    //length是长度

  

   //在字符串中提取字符串

     /*

       方法:[ str6 substringToIndex:(NSUInteger)]

       str6 中提取从第0位到第6位的字符串,生成新的字符串,返回地址

       注:此处的范围是[0,6)(此范围是下标范围)

    str6 = @"0123456789";

    结果:str7 = @"012345"

       */

      NSString *str7 = [str6 substringToIndex:6];

    

 

      /*

        方法:[str6 substringFromIndex:(NSUInteger)]

       str6 中提取从弟6位到末尾的字符串,生成新的字符串,返回地址

       注:此处的范围是[6,n];(此范围是下标范围)

     str6 = @"0123456789";

     结果是: str9 = @"6789";

       */

      NSString *str8 = [str6 substringFromIndex:6];

    

 

       /*

       方法:[str6 substringWithRange:(NSRange)]

       这个方法的含义是:截取从第NSRange.location个元素开始,截取长度是NSRange.length

       返回地址

    下例表示:从str6中 从第4个开始截取长度为5个的字符串(依旧是下标来计数)

    范围:[4,9)

       str6 = @"0123456789"

       str9 = @"45678"

       */

      NSString *str9 = [str6 substringWithRange:NSMakeRange(4, 5)];

 

 

  (2)NSMutableString-------可变字符串(因为 可变字符串  是继承于不可变字符串 所有上述方法 可变字符串依旧能用,但初始化有一种是不能定义的,下面会说)

  

  //初始化:   

        NSMutableString *str1 = @"123456789";//这种代码是错误的,不能这么定义!!      

      NSMutableString *str1 = [[NSMutableString alloc] init];   

        [str1 setString:@"abc"];//给字符串str1设置值

 

 

   //字符串追加 

      /*

       方法:str1 appendString:(NSString *)]

       str1后面追加字符串

       */

      [str1 appendString:@"123"];

    

    //格式化追加

    [str1 appendFormat:@"%c",'Z'];

 

 

  //插入字符串

  /*

    方法:[str1 insertString:(NSString *) atIndex:(NSUInteger)]

  意思是将 字符串NSString 插入到 字符串str1的第 NSUInteger 个位置(同样是相对于下标)

  str1 = @"0123456789";

  执行后:str1 = @"012345SSSSSS6789";

  */

  [str1 insertString:@"SSSSSS" atIndex:6];  //将字符串 @"SSSSSS" 插入到 字符串str1的第6个位置

 

  //这个方法与上面一样,只不过在 insertString: 之后用的是一个通过格式化的新创建的NSString

      [str1 insertString:[NSString stringWithFormat:@"%d",-36] atIndex:6];

 

  //删除字符串

        /*

      方法:[str1 deleteCharactersInRange:(NSRange)]

    NSRange是一个结构体,内有两个成员变量

    location 代表开始的位置

    length 代表长度

    范围(location ,location + length](下标)

      str1 = @"0123456789"; 

    结果:str1 = @"01289";

     */

      [str1 deleteCharactersInRange:NSMakeRange(3, 5)];  //将 str1 中的第4个元素开始删除,删除到第9(4+5)个(包括第9个)

  

 

  //修改字符串(替换字符串)

  /*

  方法:[str1 replaceCharactersInRange:(NSRange) withString:(NSString *)]

  NSRange是一个结构体,解释看删除字符串的解释

  将 NSString 的字符串 替换 str1中的NSRange 的字符串

  str1 = @"0123456789";

  结果:str1 = @"012XXXXX56789"; 

  */  

    [ str1 replaceCharactersInRange:NSMakeRange(3, 2) withString:@"XXXXX"];//将 str1 的第3个(实际位第4个,因为是下标)开始,用字符串@"XXXXX"替换 2个长度的字符串

 

  //字符串与数据的应用

  例如:

  NSString *str = @"This is my OBjective-C Project!";

  NSArray *arr = [str componentsSeparatedByString:@" "];//意思是用空格来分割字符串,并将值存入数组

  NSString *str1 =[arr componentsJoinedByString:@" "];//意思是将数组用" "连接起来

 

转载于:https://www.cnblogs.com/Yue-Wen/p/4691421.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值