IOS学习之NSString

范围NSRange
用来表示事物相关的事宜

typeof   struct  _NSRange {
    
unsigned  localtion;
    
unsigned  length;
} NSRange;


localtion表示字符里面的字符范围或者数组元素的其实范围,length表示该字符串所包含的元素个数。比如:Objective-c is a cool language.中cool可以用location17,length4的范围来表示,location还可以用NSNotFound来表示这个值没有表示范围。
创建NSRange有三种方法
法一:直接赋值给字符串
NSRange  range;
range.location=
17 ;
range.length=
4
法二:使用C语言的聚合结构赋值机制
NSRage  range = { 17 , 4 };
法三:使用Cocoa提供的一个快捷函数NSMakeRange()
NSRange  range =  NSMakeRange ( 17 , 4 );
NSMakeRange()的好处就是可以在任何函数中使用它,例如作为参数传递:
[anObject flarbulateWithrange:NSMakeRange( 17 4 )];

NSString语法就是再双引号前加上@符号,例如 @"Hi~

创建字符串:stringWithFormat

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

NSString  *str;
str = [NSString stringWithFormat:
@"I am %d years old and my wight is %d Kg." , 23 , 65 ];
其结果为:
I am 23 years old and my weight is 65kg.

stringWithFormat是一个类方法。

字符串长度:length

- (NSUInteger) length

(NSUInteger和NSInteger区别就是:牵着是无符号整型,后者是有符号整型。)

可以这样用
NSUInteger  len = [str length]
也可以这样
if  ([str length] >  35 ) {
    NSLog(
@"Wow,this string is really tall !" )
}


字符串比较:isEqualToString

isEqualToString用来比较接收方(recever,接受消息的对象)和作为参数传递过来的字符串。isEqualToString返回一个BOOL值(YES或NO)来表示两个值是否相同。

-(BOOL)isEqualToString:(NSString *) aString

NSString  *thing1 =  @"Hello World !" ;
NSString  *thing2 = [ NSString   stringWithFormat : @"Hello World !" ];
if  ([thing1 isEqualToString:thing2]) {
    NSLog(
@"They are the same !" );
}

注:比较两个字符串要使用isEqualToString而不能简单地使用==来判断

要是比较两个字符串,可以使用compare方法

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

compare来比较两个字符串,并且返回一个NSComparisonResult对象,NSComparisonResult描述如下

enum  {
    NSOrderedAscending = -
1 ,
    NSOrderedSame,
    NSOrderedDescending
};
typedef   NSInteger  NSComparisonResult;

比如:[@“Tron” compare:@“Tom”]将返回NSOrderedAscending(前者的长度大于后者)
           [@“genious” compare @“brillient”]将返回NSOrderedDescending(前者长度小于后者)
           [@“aaa” compare @“aaa”]将返回NSOrderedSame(两者长度相等)

不区分大小写的比较方式:
-(NSComparisonResult)  compare:(NSString *) aString option:(NSStringCompareOptions) mask;

option是一个掩位码,可以使用|来添加选项标记,常用选项如下
NSCaseInsensitiveSearch:不区分大小写
NSLiteralSearch:完全比较,区分大小写
NSNumericSearch:比较字符串个数而不是字符串的值。如果没有这个选项,100会排在99前面。

所以不区分大小写的比较方式:

if  ([thing1 compare:thing2 option:NSCaseInsensitiveSearch | NSNumericSearch] == NSOrderedSame) {
    NSLog(
@"They match" );
}


字符串包含:
查看字符串里面是否包含另一个字符串,或者查看某些文件名是否是以draft为开头的草稿文件,NSString提供了两种方法,其一是以字符串开头,另一个是以字符串结尾。

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

NSString  *fileName =  @"draft-chapter.pages" ;
if  ([fileName hasPrefix: @"draft" ]) {
    NSLog(
@"This is a draft" );
else   if  ([fileName hasSuffix: @".pages" ]) {
    NSLog(
@"This is a pages" );
}

要判断字符内是否还有别的字符可以使用rangeOfString
-(NSRange) rangeOfString:(NSString *) aString;


可变性

NSString是不可变的,并不是不可以操作他们,可以对其进行字符串的比较、查找、创建等,不过不可以对其进行字符的增减。不过Cocoa提供了一个子类,NSMutableString,可是用来改变字符串。
+ (id) stringWithCapacity:(NSUInteger) capacity;

这样只是给NSMutableString提供一个建议容量,当然也可以超出建议。这个推荐是一个最优值,如果已经开辟了40M的空间,那么后续的操作会很快的。如下可以创建一个可变的字符串

NSMutableString  *string = [ NSMutableString   stringWithCapacity : 42 ];

一旦有了可变的字符串,就可以对生成的字符串进行各种操作

- (void) appendString:(NSString *) aString;
- (void) appendFormat:(NSString *) format,…;

appendString:接受aString参数,然后将其复制到接受对象的末尾。
appendFormat:的工作方式与stringWithFormat类似,但是不会创建字符串,而是将格式化后的字符串添加到字符串末尾。

NSMutableString  *string = [ NSMutableString   stringWithCapacity : 50 ];
[string appendString:
@"Hello World !" ];
[string appendFormat:
@"I am %d years old" , 23 ]

结果string被赋值为

Hello World !I am 23 years old

可以使用deleteCharactersInrange方法来删除字符串中的字符。

- (void) deletecharacterInRange:(NSRange *) aRange;

这时比如我们要从通讯录里面删除一个好友Jack,那么可以这么做。首先创建一个好友列表。

NSMutableString  *friend = [ NSMutableString   stringWithCapacity : 50 ];
[friend appendString:
@"Tom Mary James Evan Jack Jim ];

接下来要找到Jack名字出现的范围。

NSRange  jackRange = [friend rangeOfString: @"Jack" ];
jackRange.length++


然后我们就可以从通讯录里面踢掉Jack

[friend deleteCharactersInRange:jackRange];

结果中Jack就从通讯录中删除了

Tom Mary James Evan Jim

这时我们在任何可以使用NSString的时候可以替换为NSMutableString,任何时候。
当然stringWithFormat也可以使用于NSMutableString对象。

NSMutableString  *string = [ NSMutableString   stringWithFormat : @"Joy-%d" , 2 ];

这样string的初始值就是Joy-2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值