
@H_403_9@
holydancer原创,如需转载,请在显要位置注明:@H_403_9@
转自holydancer的CSDN专栏,原文地址:http://blog.csdn.net/holydancer/article/details/7343561@H_403_9@
objective C中的字符串 *** 作@H_403_9@
@H_403_9@
在OC中创建字符串时,一般不使用C的方法,因为C将字符串作为字符数组,所以在 *** 作时会有很多不方便的地方,在Cocoa中Nsstring集成的一些方法,可以很方便的 *** 作字符串,下面举几个例子:@H_403_9@
@H_403_9@
1、创建:
@H_403_9@
直接利用等号赋值@H_403_9@
Nsstring * str1=@"我是字符串";@H_403_9@
stringWithFormat方法@H_403_9@
Nsstring *str2=[Nsstring stringWithFormat:@"我是参数字符串%d,%d",11,111"];@H_403_9@
2,合并:@H_403_9@
Nsstring 字符串是不可改变的,可以在原字符串的基础上生成新的字符串,但是原字符串并没有改变,但是Nsstring 提供了一个子类:NSMutableString.该类是可变的,Nsstring可用的方法也同样适用于NSMutableString,但是使用之前要预先声明:@H_403_9@
NSMutableString *str3 = [NSMutableString stringWithCapacity:50];@H_403_9@
需要注意的是,该处声明时虽然给了50的容量,但是NSMutableString会自动扩充,所以不用担心给的空间小了。@H_403_9@
创建了NSMutableString字符串,我们就可以进行合并 *** 作了,常用方法有:@H_403_9@
@H_403_9@
NSMutableString *str3 =[NSMutableString stringWithCapacity:50]; Nsstring *str4=@"Nsstring 字符串"; [str3 appendString:str4]; [str3 appendFormat:@"%d",5]; NSLog(str3);以上代码输出结果为:“ Nsstring字符串5”;
@H_403_9@
3,删减:@H_403_9@
字符串的删减,需要用到一个辅助结构体:NSRange;@H_403_9@
NSRange的两个属性length,location,既可用于图形辅助,又可用于字符串辅助,在字符串辅助中,表示字符串中的一段范围,location指起始位置,length指包含字符的个数。创建NSRange的方法有三种:@H_403_9@
(一)@H_403_9@
NSRange range;@H_403_9@
range.location = 10;@H_403_9@
range.length = 2;@H_403_9@
(二)@H_403_9@
NSRange range={10,2};@H_403_9@
(三)@H_403_9@
NSRange range=NSMakeRange(10,2);//此种方法较为常用。@H_403_9@
下面看段代码,如何使用NSRange辅助修改字符串内容:@H_403_9@
@H_403_9@
@H_403_9@
#import <Foundation/Foundation.h>int main(int argc,const char * argv[]){ @autoreleasepool { NSMutableString *str=[NSMutableString stringWithCapacity:5]; [str appendString:@"I am holydancer"]; //判断str里是否有"am",并将其范围取出。 NSRange range =[str rangeOfString:@"am"]; [str deleteCharactersInRange:range]; NSLog(@"%@,%lu,%lu",str,range.length,range.location); } return 0;}输出结果如下: I holydancer,2,2@H_403_9@
@H_403_9@
4,比较:@H_403_9@
(一)是否相等的比较:@H_403_9@
和java中某些情况类似,字符串并不能直接用==比较,==比较的是两个字符串是否是同一个对象,而我们要比较的通常是两个字符串是否相等,这时应该使用isEqualToString,而不是用==比较其指针值。isEqualToString的返回值是BOol类型,为YES和NO。@H_403_9@
@H_403_9@
#import <Foundation/Foundation.h>int main(int argc,const char * argv[]){ @autoreleasepool { Nsstring *str1 = @"holydancer"; Nsstring *str2 = @"holydancer"; if([str1 isEqualToString:str2]) { NSLog(@"字符串内容相等"); } } return 0;} (二)字符串大小的比较: @H_403_9@
字符串根据排列顺序的不同,会有大小的差异,如果我们要比较两个字符串的大小的话,可以使用compare方法。compare 方法返回的结果有三种:NSOrderedAscending,NSOrderedSame,NSOrderedDescending,另外,在使用compare方法时可以添加参数来决定是否区分大小写,或者声明为比较字符串个数而不是字符值等比较条件。@H_403_9@
具体使用看如下DEMO:@H_403_9@
@H_403_9@
#import <Foundation/Foundation.h>int main(int argc,const char * argv[]){ @autoreleasepool { Nsstring *str1 = @"holydancer"; Nsstring *str2 = @"dancerholy"; NSComparisonResult result1 =[str1 compare:str2]; if (result1==NSOrderedSame) { NSLog(@"相等"); }else if (result1 == NSOrderedAscending) { NSLog(@"str1小于str2"); }else { NSLog(@"str1大于str2"); } } return 0;} @H_403_9@
如果要忽略大小写的话,可以在options 里面加一个参数NSCaseInsensitiveSearch;具体如下@H_403_9@
NSComparisonResult result2 =[str1 compare:str2 options:NSCaseInsensitiveSearch];@H_403_9@
和NSCaseInsensitiveSearch对应的条件还有NSliteralSearch(区分大小写),NSNumericSearch(按字符个数比较),并可以使用"|"来同时满足多个条件。@H_403_9@
(三)判断字符串的开头和结尾@H_403_9@
hasPrefix方法判断是否以某字符串开头,hasSuffix判断是否以某字符串结尾。@H_403_9@
@H_403_9@
#import <Foundation/Foundation.h>int main(int argc,const char * argv[]){ @autoreleasepool { Nsstring *str1 = @"holydancer"; if ([str1 hasPrefix:@"holy"]) { NSLog(@"str1以holy开头"); } if ([str1 hasSuffix:@"dancer"]) { NSLog(@"str1以dancer结尾"); } } return 0;} @H_403_9@
关键字:objective-c ,objective c , oc ,字符串@H_403_9@ 总结
以上是内存溢出为你收集整理的objective C中的字符串(三)全部内容,希望文章能够帮你解决objective C中的字符串(三)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)