NSString&NSMutableString

来源:互联网 发布:苹果手机java编程软件 编辑:程序博客网 时间:2024/05/22 02:06

NSString and NSMutableString (一)

1.NSString(不可变字符串)

1)讲字符串之前,我们先了解下字符串相关有用的数据类型,Cocoa为我门准备了一个字符串操作相关的结构体NSRange

typedef struct _NSRange{    NSUInteger location;    NSUInteger length;}NSRange;

location,表示其实位置,字符串时从0开始的。length,表示长度。
调用NSRange的方式有三种:

1 NSRange range=NSMakeRange(10,5);

2 NSRange range; range.location=10; range.length=5;

3 NSRange range={10,3};

一般第一种方式比较常用。

2)字符串创建

1. NSString *string=@"字符串内容(中英文都可以)";2. NSString *string=[NSString new];//这里是实例化一个NSString对象,对象stirng的值为NULL。OC中[]代表调用方法,以后这种调用方式会很常见到。3. NSString *string = [NSString stringWithFormat:@"我今年%d岁了",5];//string="我今年5岁了";这是NSString的类方法创建字符串。4. NSString *string =[[NSString alloc]initWithFormat:@"Hello"];//....同样类似的实例方法还有很多:-(id)initWithString:(NSString *)aString;-(id)initWithData:(NSData *)data encoding:(NSStringEncoding)encoding;//....不写了,具体可以看API

3)字符串长度
NSString已经帮我们封装好了一个便利的实例方法:length,用于返回一个字符串中的字符个数。

-(unsigned int)length;

NSString *s=@"Hello";unsigned long len=[string length];//一般不会这么用,麻烦,直接用.length就可以得到字符串长度了。NSLog(@"Hello的长度是:%ld",s.length);//length是无符号的长整型,用%ld接收。

4)字符串常用的几种方法

  1. 字符串比较

    <1>比较两个字符串的指针

    比较两个字符串的指针,可以直接用“==”来判断

    NSString *str1=@"Hello";NSString *str2=[NSString stringWithFormat:@"Hello"];if(str1==str2){    NSLog(@"指针相同");}else{    NSLog(@"指针不同");}//这里输出的是指针不同,注意,stringWithFormat得到的字符串时一个新的字符串对象(深拷贝)。如果用stringWithString得到的是一个浅拷贝对象,它们指向同一个对象,所以指针相同。

    <2>比较两个字符串的内容

    -(BOOL) isEqualToString:(NSString *)aString;//aString就是参与比较的第二个字符串,如果内容相同,返回YES(1),反之,返回NO(0)。

    if([@"Hello" isEqualToString :@"Hello"]){    NSLog(@"内容相同");}else{    NSLog(@"内容不相同");}//内容明显是相同的,[string1 isEqualToString string2]。
  2. 字符串拼接

    讲到字符串拼接,LZ很不习惯啊,以前C#的+连接符特别习惯,换到OC却不给用…

    那么OC中怎么拼接呢?拼接NSString也为我们提供了实例方法:

    -(NSString )stringByAppendingString:(NSString )aString;
    -(NSString )stirngByAppendingFormat:(NSString )format…;

    NSString *str=@"LOL我表哥是";NSString *newStr=[str stringByAppendingString:@"黄金5段位"];//newStr=LOL我表哥是黄金5段位NSString *str2=@"i want to buy ";NSString *newStr2=[str2 stringByAppendingFormat:@"iphone%ds",5];//newStr2=i want to buy iphone5s
  3. 字符串查找、截取

    查找

    -(BOOL)hasPrefix:(NSString *)string;//判断一个字符串是否以stirng开头

    -(BOOL)hasSuffix:(NSString *)string;//判断一个字符串是否以stirng结尾

    //当我们用来查找文件时非常有用,可以获取文件名用字符串保存起来,再适当调用上述两个方法NSString *fileName=@"ios-7-24.doc";if([fileName hasPrefix :@"ios"]){    NSLog(@"这个文件跟iOS相关");}if([fileName hasSuffix :@".doc"]){    NSLog(@"这个文件是word文档");}

    除此之外我们之前一开始讲了NSRange,也可以通过NSRange来查找,例子走起:

    NSString *fileName=@"ios-7-24.doc";NSRange range=[fileName rangeOfString :@"24"];//location=6,length=2;从0开始数起...//假如没有查找到,range.location=NSNotFound。这点非常重要,通常适用于while循环查找的跳出条件。

    截取

    -(unichar)characterAtIndex:(NSUInteger)index:index;//字符串索引时从0开始的,这点要牢记。

    NSString *str=@"my name is GuoMingJian.";char c=[str characterAtIndex:14];NSLog(@"%c",c);//结果为:M

    -(NSString *)substringFromIndex:(NSUInteger)from:index;//包含from位置的字符。

    NSString *str=@"my name is GuoMingJian.";NSString *newStr=[str substringFromIndex:11];//11位置是G,这里是G到字符串结尾NSLog(@"%@",newStr);//结果为:GuoMingJian.

    -(NSString *)substringToIndex:(NSUInteger)to:index;//这里不包含to位置的字符

    NSString *str=@"my name is GuoMingJian.";NSString *newStr=[str substringToIndex:7];//位置是name后面的空格,这里是字符串0到索引7NSLog(@"%@",newStr);//结果为:my name//name后无空格

    -(NSString *)substringWithRange:(NSRange)range:range;

    NSString *str=@"my name is GuoMingJian.";NSString *newStr=[str substringWithRange:NSMakeRange(3,6)];NSLog(@"%@",newStr);//结果为:name i//从索引3位置开始(包括3)截取长度为6的字符串。
  4. 字符串的转换函数

    -(double)doubleValue;

    -(float)floatValue;

    -(int)intValue;

    double d=[@"123" doubleValue];float f=[@"123" floatValue];int i=[@"123" intValue];NSLog(@"%.2f;%.2f,%d",d,f,i);//123.00;123.00,123
  5. 字符串替换函数

    替换函数也是比较重要,也挺好用的。希望能掌握…

    -(NSString *)stringByReplacingOccurrencesOfString:
    (NSString )target withString:(NSString )rep;//将rep替换target

    NSString *str=[@"i am a guy" stringByReplacingOccurrencesOfString:@"guy" withString:@"gay"];NSLog(@"%@",str);//i am a gay

    -(NSString *)stringByReplacingCharactersInRange:
    (NSRange)range withString:(NSString *)rep;
    //将原字符串range范围的字符替换成rep

    //NSString *str=[@"i am a guy" stringByReplacingCharactersInRange:NSMakeRange(7,3) withString:@"gay"];NSRange range=NSMakeRange(7,3);NSString *str=[@"i am a guy" stringByReplacingCharactersInRange:range withString:@"gay"];NSLog(@"%@",str);//i am a gay

    分隔符方法,componentsSeparatedByString 这个方法也很经常用到,比如处理一个很长且很有规律性的字符串,通常用它来格式化处理。它返回的是一个数组。
    -(NSArray )componentsSeparatedByString:(NSString )separator;

    NSString *str=@"Hesbllo worsbld";NSArray *array=[str componentsSeparatedByString:@"sb"];for(id i in array){    NSLog(@"%@",i);}//结果://He//llo wor//ld
  6. 字符串大小写转换函数

    -(NSString *)uppercaseString:;//将字符全部改成大写的

    NSString *str=@"hello world";str=[str uppercaseString];NSLog(@"%@",str);//HELLO WORLD

    -(NSString *)lowercaseString:;//将字符全部改成小写的

    NSString *str=@"HELLO WORLD";str=[str lowercaseString];NSLog(@"%@",str);//hello world

    -(NSString *)capitalizedString:;//将首个字符改成大写,其余的全部都小写

    NSString *str=@"HELLO WORLD";str=[str capitalizedString];NSLog(@"%@",str);//Hello World

总结:NSString 的实例方法都会产生一个新的字符串,也就是说它并不是在原有的字符串改变其本身的。而NSString的子类NSMutableString就是在其本身操作的。子类NSMutableString也能使用父类NSStirng所有实例方法。

下节我们继续讲解NSMutableString。

0 0
原创粉丝点击