objective-c之NSString

objective-c之NSString,第1张

概述NSString在前面已经说过是,是Cocoa中用来处理字符串的类。下面就是NSString的一些常用方法及 *** 作:  创建字符串 NSString的stringWithFormat:方法就是通过格式字符串和参数创建NSString的: + (id) stringWithFormat: (NSString *) format,...; 你可以按下面的使用,如: NSString *height; H

Nsstring在前面已经说过是,是Cocoa中用来处理字符串的类。下面就是Nsstring的一些常用方法及 *** 作:

 创建字符串

Nsstring的stringWithFormat:方法就是通过格式字符串和参数创建Nsstring的:

+ (ID) stringWithFormat: (Nsstring *) format,...;

你可以按下面的使用,如:

Nsstring *height;

Height = [Nsstring stringWithFormat:@"your heightis %d feet",5];

那得到的字符串是“yourheight is 5 feet”

类方法

前面看到了stringWithFormat的定义,不知注意到了没有,和我们以前声明一个方法有两个很大的区别:

第一个是参数用“,...”来结尾,这是表示它可以接多个参数;

第二个是方法前面不是“-”,而是“+”,这是什么意思呢?这是表示它是一个类方法,这个方法属于类对象(而不是实例对象)并且通常用于创建新的实例。这种用来创建新对象的类方法称为工厂方法。

 

获取大小

Nsstring中的另一个实例方法是length,它返回的是字符串中的字符个数。

- (unsigned int) length;

可以这样使用它:

unsigned int len = [height length];

 

比较的策略

isEqualToString:可以用来比较接收方和当作参数传递来的符号。它返回一个BOol型数据来表示两个字符串的内容是否相同。声明如下:

- (BOol) isEqualToString: (Nsstring *) aString;

举例说明:

Nsstring *string1 = @"hello 5";

Nsstring *string2;

string2 = [Nsstring stringWithFormat: @"hello%d",5];

if([string1 isEqualToString:string2])

{

    NSLog(@"They are same!");

}

 

compare:用来比较两个字符串,将接收对象和传递来的字符串进行比较,返回一个NSComparisonResult(就是一个enum型数据)来显示比较结果,声明如下:

-(NSComparisonResult) compare:(Nsstring *) string;

返回值的定义如下:

typedef enum _NSComparisonResult{
     NSOrderedAscending = -1,    // <升序
     NSOrderedSame,              // =等于
     NSOrderedDescending  // >降序
} NSComparisonResult;

备注:如果比较两个字符串是否相等时,应该用isEqualToString,而不能仅仅只是比较字符串的指针值。另外compare判断的话只会根据第一个字符来进行判断,比如100与90,那就是升序,abcdef与dc比较,也是升序。

 

 不区分大小写的比较

compare:也可以进行区分大小写的比较,它还有一种重载,多了一个option参数,用来给我们更多的选择与 *** 作,方法具体定义如下:

-(NSComparisonResult) compare:(Nsstring *) string

                      option:(unsigned)mask;

 

options参数是一个位掩码,你可以使用位或运算符来添加选项标记,常用的选项如下:

NSCaseInsensitiveSearch:不区分大小写字符。

NSliteralSearch:进行完全比较,区分大小写。

NSNumericSearch:比较字符吕的字符个数,而不是字符值。

例如:如果要进行字符串的比较,要忽略大小写但按字符个数的多少正确排序,那么应该如下使用:

if([thing1compare:thing2

option: NSCaseInsensitiveSearch

| NSNumericSearch]

== NSOrderedSame)

{

    NSLog(@“they match!”);

}

 

如何判断字符串里面还包含其他字符串

比如你要判断一个文件名里面是否包含“.avi”,这样可以判断是否可以用播放器打开它,再或者你想检查一个文件的开头是否包含了一个字符“my”,来判断它是否是你的文档。那么下面有两个方法来帮助进行判断:一个是检查字符串是否以另一个字符串进行开头,另一个是检查字符串是否以另一个字符串进行结尾:

-(BOol) hasPrefix:(Nsstring *) aString;

-(BOol) hasSuffix:(Nsstring *) aString;

那么如何判断字符串中是否包含另一个字符串呢?还有另一个函数:

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

返回的NSRange结构体,range.start为出现的第几个位置,range.length为要比较的字符串的长度,如果没有找到,则range.start则等于NSNotFound。


可变的字符串

Nsstring是不可变的,创建了之后就无法改变它,我们只能对它进行各种不影响其内容的 *** 作,比如删除字符或者添加字符来改变它。所以Cocoa提供了一个Nsstring的子类,叫做NSMutableString,如果定义的字符串后面会发生改变,则使用这个子类。

使用类方法stringWithCapacity:来创建一个新的NSMutableString,声明如下:

- (ID) stringWithCapacity: (unsigned) capacity:

备注:capacity只是一个最优的容量,定义了这个大小后,并不是说仅限于这么大。

NSMutableString *string;

string = [NSMutableString stringWithCapacity: 42];

NSMutableString常用的 *** 作有如下:

appendString:和appendFormat:来附加新字符串,定义如下:

 - (voID)appendString: (Nsstring *) aString;

 -  (voID) appendFormat: (Nsstring *) Format;

appendString 接受参数aString,然后将其复制到接受对象的末尾。

appendFormat类似,他将格式化的字符串附加在接受对象的末尾,而不是创建新的对象。

deleteCharacterInRange:用来删除字符串中的字符,定义如下:

-(voID)deleteCharactersInRange: (NSRange) range;

通常将deleteCharactersInRange:和rangeOfString:连在一起使用,NSMutableString可以使用Nsstring的全部功能,包括rangeOfString:、字符串比较和其他任何功能。

总结

以上是内存溢出为你收集整理的objective-c之NSString全部内容,希望文章能够帮你解决objective-c之NSString所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1060561.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存