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:@" "];//意思是将数组用" "连接起来

时间: 2025-01-02 03:29:06

Objective-C学习- 字符串类型 NSString 和 NSMutableString的相关文章

黑马程序员-OC学习笔记之NSString与NSMutableString

---------------------- IOS开发.Android培训.期待与您交流! ---------------------- 一.NSString与NSMutableString 相信大家对NSString类都不陌生,它是OC中提供的字符串类,它的对象中的字符串都是不可变的,而它的子类NSMutableString类的对象中的字符串就是可变的.什么是可变与不可变呢?二者的区别就是在已经创建的一个字符串对象中,在程序中能不能更改字符串,比如拼接新的字符串,可变的可以在原字符串中更改,

Redis之学习-字符串类型

1,set key value ex秒数/px 毫秒 nx/xx127.0.0.1:6379> set name z2 px 1000OK127.0.0.1:6379> ttl name(integer) -2nx:表示key不存在时执行操作xx:表示key存在时操作 如:127.0.0.1:6379> flushdbOK127.0.0.1:6379> set jiaxiao dfssOK127.0.0.1:6379> set jiaxiao gjjx nx(nil)127.

NSString字符串类型-学习总结

1.字符串的创建 (1)创建常量字符串 NSString *str = @"This is a String"; //str是变量名 (2)创建空的字符串,给字符串赋值 NSString *str = [NSString alloc] init]; str = @"科比 布莱恩特"; //直接赋值 (3)花样赋值 <1>使用初始化方法:initWithFormat:根据一定的字符串格式来初始化字符串对象,将格式串中的内容写入字符串对象空间内 NSStri

NSString和NSMutableString 的常见用法

NSString类是我们经常使用的类,这里对其用途及常用的一些方法做一些归类. 1>字符串的创建 NSString *str = @"字符串内容“;   //直接使用字符串常量的赋值方式 NSString *str = [NSString alloc ] init];   //创建一个空的字符串对象 NSString *str = [NSString stringWithFormat: @""];  //使用类方法的格式化创建方式来创建字符串 NSString *str

iOS基础-NSString及NSMutableString剖析

一.NSString头文件 NSString : NSObject 实现协议: NSCopying/NSMutableCopying/NSSecureCoding 类别: //扩展类别 NSString (NSStringExtensionMethods) //此API是用来检测给定原始数据的字符串编码 NSString (NSStringEncodingDetection) NSMutableString : NSString 类别: //可以实现子类的原始replaceCharactersI

IOS阶段学习第13天笔记(NSString与NSMutableString)

IOS学习(OC语言)知识点整理 一.OC字符串的操作 1)OC中字符串分为两种: 1.不可变字符串NSString:不能修改对象内容,但是可以改变对象的指针. 2.可变字符串NSMutableString:可以修改对象内容. 二.NSString 不可变字符串的操作 1)将字符串常量对象直接赋值给字符串引用 NSString *[email protected]"hello"; 字符串对象的输出格式:NSLog(@"str1=%@",str1). 2)initWi

bjective-C 中核心处理字符串的类是 NSString 与 NSMutableString

Objective-C 中核心处理字符串的类是 NSString 与 NSMutableString ,这两个类最大的区别就是NSString 创建赋值以后该字符串的内容与长度不能在动态的更改,除非重新给这个字符串赋值.而NSMutableString 创建赋值以后可以动态在该字符串上更改内容与长度. 1.创建经典的NSString字符串 NSString 与 char* 最大的区别就是 NSString是一个objective对象,而char* 是一个字节数组.@+ " 字符串 " 

OC之字符串 NSString与NSMutableString

一.NSString 不可变字符串的操作1)将字符串常量对象直接赋值给字符串引用 NSString *[email protected]"hello"; 字符串对象的输出格式:NSLog(@"str1=%@",str1). 2)initWithString可将OC中的字符串对象构建字符串引用  NSString *str2=[[NSString alloc]initWithString:str1]; . 3)initWithUTF8String可将C语言的字符串创建

Objective-C: 字符串NSString与NSMutableString

字符串算是OC中非常重要和常用的一部分内容,OC中的字符串与我之前在学习C,C++,Java中的字符串有一定的不同,它非常类似于C++中容器的概念,但用法却与之还是有很大的不同,也许是因为OC的语法就与其他我们常用的编程语言不尽相同.  这里总结一下字符串NSString与NSMutableString. 一. NSString NSString代表字符序列不可变的字符串,NSString的功能非常强大,OC的字符串处理比C语言的饿字符串简单.易用得多. 这里我们通过一个具体的例子来进行分析.