您的位置:首页 > 移动开发 > Objective-C

OC基础-零基础学习Objective-C:第三部分.NSString

2015-08-29 11:54 197 查看
NSString是Cocoa中用来处理字符串的类,属于Foundation框架下,它的根类是NSObject类,所以在使用NSString类的时候别忘了声明Foundation.h。

1.NSString类的对象的创建

字符串创建方法的声明:

+ (id) stringWithFormat:(NSString *)format,......;

创建字符串对象的方式一:直接赋值。

NSString *a = @"你的体重是60kg,身高是180cm。";

创建字符串对象的方式二:通过方法创建对象,并且可以通过参数的改变生成不同的字符串。

NSString *b;

b = [NSString stringWithFormat:@"你的体重是%dkg,身高是�m。",60,180];

连起来就是:

NSString *b = [NSString stringWithFormat:@"你的体重是%dkg,身高是�m。",60,180];

注意:如果字符串的内容完全是由数字组成的,可以不用@""。

2.判断NSString类的对像的长度

NSString提供了一个方法length,可以使用length方法直接判断一个字符串的长度(字符个数)。

length的声明:

- (NSUInteger) length;

直接调用:

NSUInteger length = [a length];

或者是放在表达式中:

if ([a length] > 35)

{

NSLog(@"这个字符串长度在35个字符以上。")

}

length这个方法可以精确的处理各种语言,而不像在C语言中那样,一个中文字符占3个字节,length这里处理中文字符,一个中文字符就是一个字符,甚至它能够处理多国语言和混合语言,比如在一串字符中含有中文、俄文,英文、韩文,它能够准确的处理这些字符的数量。

3.判断NSString字符串是否一样

isEqualToString:用来比较接收方和作为参数传过来的字符串之间是否相同,它会返回一个BOOL值来表示两个字符串之间是否相同。

isEqualToString的声明:

- (BOOL) isEqualToString:(NSString *)aString;

isEqualToString的方法调用:

if ([a isEqualToString:b])

{

NSLog(@"它们是一样的");

}

compare:将接受对象和传递过来的字符串逐个比较,并返回一个NSComparisonResult的enum枚举类型来显示比较结果。

compare的声明:

- (NSComparisonResult) compare:(NSString *)aString;

compare的枚举:

enum

{

NSOrderedAscending = -1,

NSOrderedSame,

NSOrderedDescending

};

typedef NSInteger NSComparisonResult;

注意:比较两个字符串是否相同应该用isEqualToString,而不能仅仅比较字符串的指针。即不能 if(a == b) ,因为 == 运算符只是比较 a 和 b 的指针数值,而不是比较它们所指向的对象。

4.判断NSString字符串内是否还包含了别的字符串。判断一个字符串是否以另一个字符串开头,或者判断一个字符串是否以另一个字符串结尾。

hasPrefix:判断是否开头的声明:

- (BOOL) hasPrefix:(NSString *)aString;

hasSuffix:判断时候结尾的声明:

- (BOOL) hasSuffix:(NSString *)aString;

调用两个方法:

NSString *fileName = @"fraft-chapter.pages";

if ([fileName hasPrefix:@"draft"])

{

//输入你想做的事

}

if ([fileName hasSuffix:@"draft"])

{

//输入你想做的事

}

rangeOfString:判断字符串某处是否包含其他字符串。会返回一个NSRange结构体来告诉你与之匹配的字符串位于什么位置以及个数,如果没有找到则返回的位置为NSNotFound。

rangeOfString的声明:

- (NSRange) rangeOfString:(NSString *)aString;

rangeOfString的方法调用:

NSRange range = [fileName rangeOfString:@"chapter"];

5.NSString的可变子类NSMutableString

NSString类创建的字符串是不可变的,就是指一旦创建变不能更改,可以对它执行生成新的字符串、查找字符、将它与其他字符串进行比较,但是不能删除字符活着添加字符来改变它。为了方便对字符串的修改,Cocoa中提供了一个NSString的子类NSMutableString类,这个类中声明的字符串均是可以更改的。

NSMutableString的创建方法和他的父类NSString几乎一样,最简单的创建方法便是和变量一样直接声明并赋值。常用的则是通过stringWithCapacity方法进行创建,并且分配NSMutableString对象的容量,这里的容量只是建议大小,可以根据实际情况自动扩大。

stringWithCapacity的声明:

+ (id) stringWithCapacity:(NSUInteger)capacity;

stringWithCapacity的调用:

NSMutableString *string = [NSMutableString stringWithCapacity:42];

appendString:接收字符串,然后将其复制到接收对象的末尾。

appendString的声明:

- (void) appendString:(NSString *)aString;

appendFormat:将接收到的字符串附加在接收字符串的末尾。

appendFormat的声明:

- (void) appendFormat:(NSString *)format,......;

appendString和appendFormat方法的调用:

NSMutableString *string = [NSMutableString stringWithCapacity:50];

[string appendString:@"Hello there"];

[string appendFormat:@"human %d!",39];

输出结果为:“Hello there human 39!”

deleteCharactersInRange:删除字符串中的指定字符。

deleteCharactersInRange的声明:

- (void) deleteCharactersInRange:(NSRange)aRange;

由于NSMutableString是NSString类的子类,所有NSMutableString拥有所有NSString类的属性和方法,通常deleteCharactersInRange和NSString的对象方法rangeOfString一起使用。

NSMutableString *friends = [NSMutableString stringWithCapacity:50];

[friends appendString:@"James BethLynn Jack Evan"];

NSRange jackRange = [friends rangeOfString:@"Jack"];

jackRange.length++;

[friends deleteCharactersInRange:jackRange];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: