OC基础-OC三大基本数据结构-NSString

来源:互联网 发布:淘宝客服名字大全 编辑:程序博客网 时间:2024/06/05 07:27

一、OC三大基本数据结构概述

1.NSString: OC中的字符串。

基类:NSString: 字符串,不可变字符串,对象一旦创建,字符串的长度和内容不可变。

子类:NSMutableString: 可变字符串。

2.NSArray: OC中的数组。数组对象存储的地址是有顺序的元素。

基类: NSArray:数组

子类: NSMutableArray 可变数组

3.NSDicstionary: OC中的字典。字典对象存储的地址是没有顺序的键值对。与数组类似,但又区别于数组。

基类:NSDictionary:字典

子类:NSMutableDictionary: 可变字典


二、NSString的使用

1.C中的字符串和OC的字符串

OC完全兼容C,所以在OC中是可以使用C中的字符串的,但是OC有自己独有的创建字符串的方式。在OC中,字符串是一个类,每个创建的字符串都是类的对象。

创建和输出比较

char * p = "C str:hello world";        NSLog(@"%s", p);                NSString * str1 = @"OC str1: hello world";        NSLog(@"%@", str1);

2.NSString对象的创建

//使用C的字符串来创建OC字符串对象        NSString *str3 = [[NSString alloc] initWithUTF8String:"oc str3: hello world"];        //使用格式符创建OC字符串        NSString *str4 = [[NSString alloc]initWithFormat:@"oc str4:hello worl%c,%d",'d',4];                //创建临时字符串        NSString * str5 = [NSString stringWithUTF8String:"hello world"];        NSString * str6 = [NSString stringWithFormat:@"hello %d %c",4,'A'];                [str3 release];        [str4 release];
使用init创建的字符串对象,需要手动调用release方法释放对象所占用的内存。而临时字符串会自动释放。


3.NSString的一些方法

 NSString *str7 = @"hello";        NSString *str8 = @"hello";                //1.比较字符串是否相同,相同未yes/1,不同为no/0        BOOL ret = [str7 isEqualToString:str8];        NSLog(@"%d",ret);                //2.比较字符串大小,结果为枚举类型,-1/0/1        NSComparisonResult ret2 =[str7 compare:str8];        if(ret2 == NSOrderedAscending){            NSLog(@"左边小");        }else if (ret2 == NSOrderedSame){            NSLog(@"相同");        }else if(ret2 == NSOrderedDescending){            NSLog(@"左边大");        }                //3.查找子 字符串        NSString * s1 = @"I am a very good man";        NSString * s2 = @"very";                //在s1中查找s2,获得s2的位置和长度        NSRange range = [s1 rangeOfString:s2];        NSLog(@"location:%lu length:%lu", range.location,range.length);                        //4.截取已有字符串,生成新的字符串,原来的字符串不发生任何变化        NSString * s3 = @"0123456789";        NSString * s4 = [s3 substringToIndex:6];//[0,6)        NSString * s5 = [s3 substringFromIndex:6];//[6,end],从0开始数        NSRange range2 = {3, 4};//结构体第一个参数为起始位置,第二个为长度        NSString * s6 = [s3 substringWithRange:range2];//传入一个range结构体对象        NSString * s7 = [s3 substringWithRange:NSMakeRange(3, 4)];//直接创建一个range                        NSLog(@"s1:%@",s1);        NSLog(@"s2:%@",s2);        NSLog(@"s3:%@",s3);        NSLog(@"s4:%@",s4);        NSLog(@"s5:%@",s5);        NSLog(@"s6:%@",s6);        NSLog(@"s7:%@",s7); /*  2015-09-17 07:36:30.935 数据结构-NSString[2573:73722] s1:I am a very good man  2015-09-17 07:36:30.935 数据结构-NSString[2573:73722] s2:very  2015-09-17 07:36:30.935 数据结构-NSString[2573:73722] s3:0123456789  2015-09-17 07:36:30.935 数据结构-NSString[2573:73722] s4:012345  2015-09-17 07:36:30.935 数据结构-NSString[2573:73722] s5:6789  2015-09-17 07:36:30.936 数据结构-NSString[2573:73722] s6:3456  2015-09-17 07:36:30.936 数据结构-NSString[2573:73722] s7:3456  */


三、NSMutableString的使用

NSMutableString类,可变字符串类的对象,内容可变,无外乎增删改查,对字符串内容进行修改。该类继承自NSString类,所以它除了能够使用NSString类的方法,还有一些自己独有的方法。

NSMutableString *s8 =@"hello";//这种做法是错误的        NSMutableString * s9 = [[NSMutableString alloc] initWithCapacity:10];//创建一个长度为10的可变字符串        NSMutableString * s10 = [[NSMutableString alloc] init];//创建一个空的可变字符串,然后给值        [s10 setString:@"hello"];//s10 =>"hello"        [s10 setString:@"world"];//s10=>"world",原来的内容被替换了                NSLog(@"s10: %@", s10);                //1.增,追加字符串        [s10 appendString:@" world"];        [s10 appendFormat:@"%c",'D'];        NSLog(@"s10 :%@", s10);//world worldD                //1.增,插入字符串        [s10 insertString:@"hello " atIndex:0];        NSLog(@"s10 :%@", s10);//hello world worldD                //2.删,delete        [s10 deleteCharactersInRange:NSMakeRange(3, 4)];        NSLog(@"s10 :%@",s10);//helorld worldD                //3.改,replace        [s10 replaceCharactersInRange:NSMakeRange(3, 2) withString:@"AB"];        NSLog(@"s10 :%@", s10);//helABld worldD


@诗未冷学习博客



0 0