[好程序员训练营]Objective-C学习笔记---基本数据结构NSString

    <A href="http://www.goodprogrammer.org/" target="blank">ios培训</A>------我的OC语言笔记,期待与您交流!

  NSString在OC中是一个字符串类,我们可以用它来生成字符串对象,几种方法如下

1 NSString * str = @"hello str";    
2 //创建一个内容为hello world 的字符串对象,并且把对象的地址赋给str
3  NSString * str1 = [[NSString alloc] initWithString:@"hello str1"]; 
4 //用字符串创建一个字符串对象
5  NSString * str2 = [[NSString alloc] initWithFormat:@"hello str2 %@",str1];   
6 //使用格式符拼接成一个字符串对象
7  NSString * str3 = [[NSString alloc] initWithUTF8String:"hello str3"]; 
8 //用C语言的字符串创建一个OC的字符串对象

  因为生成这些对象的时候使用了alloc方法,所以在程序的最后我们需要使用release方法来释放内存,上面的方法1、2、3又分别对应了三种创建临时字符串的方法,来看代码

1 NSString * st1 = [NSString stringWithString:@"hello st"];
2 //
3 NSString *st2 = [NSString stringWithFormat:@"hello st %@",st];
4 //
5 NSString * st3 = [NSString stringWithUTF8String:"xiaoming is legendery !"];
6 //

  生成的临时字符串是不需要人为的释放内存的。请注意:以上生成的字符串对象都是属于不可变字符串,但是用他们可以生成子字符串,并且进行一些查找以及两个字符串对象的比较。

 1 NSString *string1 = @"xiaoming";//新建两个字符串对象
 2 NSString *string2 = @"xiao";
 3     
 4 Boolean a = [string1 isEqualTo:string2];
 5 //对象string1执行isEqualTo函数与stirng2比较是否相同,并且返回一个Boolean类型的值
 6     
 7 NSComparisonResult b = [string1 compare:string2];
 8 //string1与string2比较大小,返回值类型为NSSComparisonResult,返回结果有以下三种
 9     
10     if(b==NSOrderedAscending){
11         NSLog(@"string1<string2");
12     }
13     else if(b==NSOrderedSame){
14         NSLog(@"string1=string2");
15     }
16     else if(b==NSOrderedDescending){
17         NSLog(@"string1>string2");
18     }
19     
20 
21 NSRange c = [string1 rangeOfString:string2];
22  //在string1中查找子字符串string2在string1中的位置,返回值类型为NSRange,NSRange为一个结构体,包含location和length
23  NSLog(@"%lu %lu",c.length,c.location);//将对应的位置和子字符串的长度打印出来,注意这里的位置在string1中是从零开始数的
24     
25     
26 NSString * d = [string1 substringToIndex:4];
27  //从string1中提取从第零个字符到第四个字符(不包括第四个字符)生成新字符串并返回字符串地址
28 NSString * e = [string1 substringFromIndex:3];
29  //从string1中提取从第三个(包括第三个)到最后一个元素生成新字符串并返回字符串地址
30 NSRange range  = {2,4}; //第一个参数表示位置第二个表示长度
31 NSString * f = [string1 substringWithRange:range];
32 //从string1的第二个字符开始提取四个字符生成新的字符串返回字符串的地址,range也可用NSMakeRange(3,4)

  上面提到的字符串对象均为不可变字符串对象,那么对应的必然有可变字符串对象,那么可变字符串怎么生成呢?可变字符串又能做些什么呢?请看代码

  

    //生成可变字符串对象的三种方法
1   NSMutableString * cstring1 = [[NSMutableString alloc] initWithString:@"hello world"];
 2     NSMutableString * cstring2 = [[NSMutableString alloc] initWithFormat:@"%d",2];
 3     NSMutableString * cstring3 = [[NSMutableString alloc] initWithUTF8String:"hello"];
 4     ////////////////////////////////////////////////////////////
 5     
 6     [cstring1 appendString:@"123"];//追加字符串
 7     NSLog(@"%@",cstring1);
 8     
 9     [cstring1 appendFormat:@"%d",1]; //追加格式字符
10     NSLog(@"%@",cstring1);
11     
12     [cstring1 insertString:@"zhangxueyou" atIndex:3]; //在cstring1的第二个字符之前处插入字符串“zhnagxueyou”
13     NSLog(@"%@",cstring1);
14     
15     ////////////////////////////////////////////////////////////
16     [cstring1 deleteCharactersInRange:NSMakeRange(2,4)];//从字符串的第二个字符(包括第二个字符)开始删,删四个字符
17     NSLog(@"%@",cstring1);
18     
19     ////////////////////////////////////////////////
20     [cstring1 replaceCharactersInRange:NSMakeRange(2,4) withString:@"RRRRRRRRRR"];
21     NSLog(@"%@",cstring1);

  以上便是可变字符串的生成方法以及对应的几种可变字符串对象的操作方法

 

posted on 2015-06-02 22:19  LincLiu  阅读(306)  评论(0编辑  收藏  举报

导航