博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

OC基础数据类型-NSString

Posted on 2013-09-25 15:13  GISerYang  阅读(677)  评论(0编辑  收藏  举报

1、字符串的初始化

1 //字符串的初始化
2 NSString *str = @"Hello world!";
3 NSString *str2 = [[NSString alloc] initWithString:str];
4 NSString *str3 = [[NSString alloc] initWithUTF8String:"hello world"]; //用C的字符串创建OC的字符串对象
5 NSString *str4 = [[NSString alloc] initWithFormat:@"hello %d %c",5,'A']; //使用格式符拼接成一个字符串

用这种方法(alloc)创建的字符串需要释放一下

1 //用alloc生成的字符串,需要释放一下
2 [str2 release];
3 [str3 release];
4 [str4 release];

所有的alloc init版本的字符串声明,都对应着一个StringWith版本。不需要考虑内存管理

1 NSString *str5 = [NSString stringWithUTF8String:"hellow world"];
2 NSString *str6 = [NSString stringWithFormat:@"%d %@ %c",1,@"hello",'R'];
3 NSString *str7 = [NSString stringWithString:str];

以上三种是自动释放,很难确认在哪里释放,所以叫临时字符串。不需要release

以上创建的字符串都是不可以变化的

 

2、字符串的方法

1 NSString *str = @"hello world!";
2 NSString *str2 = @"hello word!";

判断两个字符串是否相等

1 //判断两个字符串是否相等
2 BOOL ret = [str isEqualToString:str2];
3 NSLog(@"%d", ret);//返回true或者false,由于返回值是0或1,所以用%d

比较两个字符串的大小

 1 //比较两个字符串的大小
 2 NSComparisonResult comRet = [str compare:str2]; //NSComparisonResult是一个枚举,返回值NSOrderedAscending = -1L, NSOrderedSame, NSOrderedDescending
 3 if(comRet == NSOrderedAscending){
 4     NSLog(@"str < str2");
 5 }
 6 else if(comRet == NSOrderedSame){
 7     NSLog(@"str == str2");
 8 }
 9 else if(comRet == NSOrderedDescending){
10     NSLog(@"str > str2");
11 }

查找字符串的位置

1 NSString *str = @"I am a so bad man.";
2 NSString * subStr = @"so";
3 //查找subStr在str中的位置,返回NSRange
4 NSRange range = [str rangeOfString:subStr];//返回位置和长度
5 NSLog(@"location:%lu, %lu",range.location,range.length);

获取子字符串

1 NSString *str = @"0123456789";
2 NSString *str2 = [str substringToIndex:6];    //从str中提取从头至第6个字符串(不包括第6个),生成新字符串,返回字符串地址。
3 NSString *str3 = [str substringFromIndex:6];    //从str中提取第6个字符(包括第6个),到最后一个字符,生成新字符串,返回字符串地址
4 //根据指定范围提取字符串
5 NSRange range = {3, 4};//3表示起始位置,4表示长度
6 NSString *str4 = [str substringWithRange:range];
7 NSString *str5 = [str substringWithRange:NSMakeRange(3, 4)];//与上面相同,NSMakeRange直接返回Range

 

3、可变字符串:继承自字符串,拥有以上的所有方法:包括创建、提取、比较等,但是也增加了一些方法

不能用这个方法创建可变字符串:NSMutableString *str = @"Hello world!";

其他的创建方法都可以。

增加的方法:增、删、改、查

1 NSMutableString *str = [[NSMutableString alloc] init];
2 [str setString:@"hello"];   //设置可变字符串的内容,再次设置就会发生替换字符串内容
1 //增,两种方式:追加、插入
2 [str appendString:@"123"];  //追加append,在结尾处字符串
3 [str appendFormat:@"%c",'R'];    //追加append,在结尾处追加格式符
4         
5 [str insertString:@"XXXX" atIndex:4];   //插入insert,在Index位置插入
1 //删,delete
2 [str deleteCharactersInRange:NSMakeRange(3, 5)];    //从第3个开始,删除5个字符
1 //改,replace
2 [str replaceCharactersInRange:NSMakeRange(3, 2) withString:@"RRRRRRRR"];

 

结题!!!