NSString 函数整理

来源:互联网 发布:电脑网络一下有一下没 编辑:程序博客网 时间:2024/06/05 01:10
#import <Foundation/Foundation.h>int main (int argc, const char * argv[]) {    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];//创建字符串NSString *height;/**类方法: +(id) stringWithFormat: (NSString *) format,... 通过格式字符串和参数来创建NSString 省略号(。。。):可以接受多个以逗号分割的参数。 这声明方法时添加加号(+),那么这个方法为类方法,不需要创建实例就可以调用,通常用于创建心的实例,我们称用来创建新对象的类方法为工厂方法。 ------------------- objective-c运行时生成一个类的时候,它会创建一个代表该类的类对象。类对象包含了指向超类的指针,类名,和指向类方法列表的指针。类对象还包含一个long型数据,为新创建的类实例对象指定大小(以字节为单位)  类方法可以用来访问全局数据。  实例方法要用前导减号(-)来开始声明  */height=[NSString stringWithFormat:@"you heigh is %d feet,%d inches",5,11];NSLog(height);//length 返回字符串中字符的个数。-(unsigned int) length;if([height length]>5){NSLog(@"height length ------");}//字符串比较/** isEqualToString :可以用来比较接收方和当作参数传递来的字符串的内容是否相同,返回yes和no */NSString *thing1=@"hello";NSString *thing2=[[NSString alloc] initWithString:@"hello"];    if([thing1 isEqualToString:thing2]){NSLog(@"they are same");}/** ==:只判断指针数值,而不是它们所指向的内容 */if(thing1==thing2){NSLog(@"== same");}/* compare:比较两个字符串。区分大小写 compare将接收对象和传递来的字符串逐个字符的进行比较,它返回一个NSComparisonResult(枚举类型)来显示结果。 typedef enum _NSComparisonResult{ NSOrderedAscending=-1; NSOrderedsame; NSOrderedDescending; } NSComparisonResult; */[thing1 compare:thing2];if(NSOrderedSame==[thing1 compare:thing2]){NSLog(@"compare same");}//compare:options: /*** -(NSComparisonResult) compare:(NSString *) string  options:(unsinged) mask;  options 是一个位掩码,可以使用|添加选项标记 选项: NSCaseInsensitiveSearch:不区分大小写字符 NSLiteralSearch:进行完全比较,区分大小写 NSNumbericSearch:比较字符串的字符个数,而不是字符值 */if([thing1 compare:thing2 options:NSCaseInsensitiveSearch| NSNumericSearch]==NSOrderedSame){NSLog(@"they match");}/** 以某个字符串开始或结尾 -(BOOL) hasPrefix:(NSString *) aString; -(BOOL) hasSuffix:(NSString *) aString; */NSString *fileName=@"aabbbcc";if([fileName hasPrefix:@"aa"]){NSLog(@"begin with aa");}if([fileName hasSuffix:@"cc"]){NSLog(@"end with cc");}//NSMutableString 可变字符串//SString 是不可变的,一旦NSString 被创建了,我们就不能改变它。//+(id) stringWithCapacity:(unsinged) capacity; capacity:是给NSMutableString的一个建议,字符串的大小并不局限于所提供的大小,这个容量仅是个最优值。    NSMutableString *str=[NSMutableString stringWithCapacity:40];[str appendFormat:@"sdfsdf%d",5];[str appendString:@"ssssssss"];NSLog(str);//删除字符串//-(void) deleteCharactersInRange:(NSRange) range;NSMutableString *ms;ms=[NSMutableString stringWithCapacity:50];[ms appendString:@"aabbccdd"];NSRange range;range=[ms rangeOfString:@"cc"];[ms deleteCharactersInRange:range];NSLog(ms);//与实例方法一样,继承对类方法也同样适用//------------------集合--------------//NSArray ,NSDictionary/** NSArray 是一个cocoa类,用来存储对象的有序列表。NSArray有两个限制:1,它只能存储objective-c的对象,而不能存储c语言中的基本数据类型如int,float,enum,struct,或者nsarray中的随机指针。2,不能这nsarray中存储nil  类方法: arrayWithObjects:创建一个新的nsarray。发送一个以逗号分割的对象列表,这列表结尾添加nil代表列表结束,(这就是不能这nsarray中存储nil的原因)  */NSArray *array=[NSArray arrayWithObjects:@"aa",@"bb",@"cc",nil];//-(unsigned) count; 取得包含对象的个数//-(id) objectAtIndex:(unsigned int) index; 取得索引位置的对象int i;for (i=0; i<[array count]; i++) {NSLog(@"index %d has %@",i,[array objectAtIndex:i]);}//------------切分数组//-componentsSeparatedByString:NSString *ns=@"sdf,dsfs,dfd,fdf,df,dd";NSArray *comArr=[ns componentsSeparatedByString:@","];for(int i=0;i<[comArr count];i++){NSLog(@"componentsSeparatedByString===%@",[comArr objectAtIndex:i]);}//componentJoinedByString: 合并nsarray中的元素来创建字符串NSString *joinedStr=[comArr componentsJoinedByString:@"-->"];NSLog(@"joined---= %@",joinedStr);//可变数组NSMutableArray *mutableArr=[NSMutableArray arrayWithCapacity:40];[mutableArr addObject:@"aa"];[mutableArr addObject:@"bb"];[mutableArr addObject:@"cc"];[mutableArr addObject:@"dd"];for(int i=0;i<[mutableArr count];i++){NSLog(@"mutableArr==%@",[mutableArr objectAtIndex:i]);}//-----  -(void) removeObjectAtIndex:(unsinged) index; 删除指定索引的对象,//删除一个对象之后,数组中并没有留下漏洞,被删除对象后面的数组元素的哦被前移来填补空缺[mutableArr removeObjectAtIndex:2];for(int i=0;i<[mutableArr count];i++){NSLog(@"removeObjectAtIndex == %@",[mutableArr objectAtIndex:i]);}//枚举//NSEnumerator ,它是cocoa用来描述这种集合迭代运输的方法//-(NSEnumerator *) objectEnumerator;NSEnumerator *enumerator=[mutableArr objectEnumerator];id thingie;while(thingie=[enumerator nextObject]){NSLog(@"i found %@",thingie);}//快速枚举for(NSString *string in mutableArr){NSLog(@"for in == %@",string);}//NSDictionary 字典/* NSDictionary 是在给定的关键字(通常是一个NSString字符串)下存储一个数值(可以是任何类型的对象)。然后你可以用这个关键字来查找相应的数值。 NSDictionary 是键查询的优化存储方式。它可以立即找出要查询的数据,而不需要遍历整个数组进行查找。  +(id) dictionaryWithObjectAndKeys:(id) firstObject,....; 该方法接收对象和关键字交替出现的系列,以nil值作为终止符号。 **/NSDictionary *dic=[NSDictionary dictionaryWithObjectsAndKeys:@"aaa",@"a",@"bbb",@"b",nil];NSString *dicStr=[dic objectForKey:@"a"];if([dicStr isEqualToString:@"aaa"]){NSLog(@"------------00000000000000000");}//可变字典NSMutableDictionary *mutableDic=[NSMutableDictionary dictionaryWithCapacity:50];[mutableDic setObject:@"1111" forKey:@"1"];[mutableDic setObject:@"222" forKey:@"2"];//删除 -(void) removeObjectForKe:(id) key;[mutableDic removeObjectForKey:@"2"];NSArray *keyArr=[mutableDic allKeys];for(NSString *str in keyArr){NSLog(@"key== %@",str);NSLog(@"value== %@",[mutableDic objectForKey:str]);}//各种数值,NSNumber NSValue/* cocoa 提供了NSNumber类来包装基本数据类型 +(NSNumber *) numberWithChar:(char) value; +(NSNumber *) numberWithInt:(int) value; +(NSNumber *) numberWithFloat:(float) value; +(NSNumber *) numberWthiBool:(BOOL) value;  -(char) charValue; -(int) intVlaue; -(float) floatValue; -(BOOL) boolValue; -(NSString *) stringValue;   **/NSNumber *number;number=[NSNumber numberWithInt:3];[mutableDic setObject:number forKey:@"int"];int num=[[mutableDic objectForKey:@"int"] intValue];NSLog(@"int object value== %d",num);//NSValue .NSNumber实际上是NSValue的子类,NSValue可以包装任意值/** +(NSValue *) valueWithBytes:(const void *) value objCType:(const char *) type; 传递的参数是你想要包装的数值的地址,通常,得到的是你想要存储的变量的地址(在c语言里适用操作符 & ),你也可以提供一个描述这个数据类型的字符串,通常用来说明struct中实体的类型和大小。你不用自己写代码 来生成这个字符串,@encode编译器指令可以接受数据类型的名称并为你生成合适的字符串 */NSRect rect= NSMakeRect(1, 2, 30, 40);NSValue *value;value=[NSValue valueWithBytes:&rectobjCType:@encode(NSRect)];NSMutableArray *mr=[NSMutableArray arrayWithCapacity:50];[mr addObject:value]; //getValue 提取数据/** -(void) getValue:(void *) value; 要传递的是存储这个数值的变量的地址 *//***value=[mr objectAtIndex:0]; NSRect r;NSLog(@"00000 ===%@",r);[value getValue:&r];NSLog(@"111== %@",r);*//** +(NSValue *) valueWithPoint:(NSPoint) point; +(NSValue *) valueWithSize:(NSSize) size; +(NSValue *) valueWithRect:(NSRect) rect;    -(NSPoint) pointValue; -(NSSize) sizeValue; -(NSRect) rectValue;  *///NSNull /* *+(NSNull *) null; */[mutableDic setObject:[NSNull null] forKey:@"fax"];id fax;fax=[mutableDic objectForKey:@"fax"];if(fax==[NSNull null]){NSLog(@"pppppppppppppppppp");}[pool drain];    return 0;}