`

【Objective-C】NSString简介

阅读更多

 

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的各种用法(创建、截取、判断比较、转化数据类型、拼接、替换…)

    Objective-C开发范例代码大全

    展示如何使用Objective-C语言的独有特性以及Foundation框架的众多特性。此外,书中广 泛提供了多种问题的解决方案,包括: ● 使用Xcode进行应用开发 ● 使用字符串、数字与对象集合 ● 使用NSArray、NSString、...

    Objective-C中字符串操作总结

    是iOS开发中Objective-C语言基础的NSString操作的总结性文档,里面包含了NSString操作的大部分方法

    NSString+Hash(Objective-C)

    Objective-C 中 NSString 关于常见 Hash 算法的分类,能对字符串,文件进行 Hash 运算,具备 HMAC 功能。支持的 Hash 算法有:MD5、SHA1、SHA256、SHA512。

    Google Objective-C Style Guide 中文版

    Google Objective-C Style Guide 中文版 目录 例子 空格与格式 空格与制表符 行宽 方法声明与定义 方法调用 @public与@private 异常 协议 命名 文件名 Objective-C++ 类名 分类名 Objective-C方法名 变量名 注释 ...

    word源码java-ocprjs:这是一个基于Objective-C语言的基础案例集。旨在用于给初学者快速了解Objective-C语言的语

    这是一个基于Objective-C语言的基础案例集。旨在用于给初学者快速了解Objective-C语言的语法。 注:以下将Objective-C简称OC XCode Objective-C git github 问答 Objective-C干什么用? 主要是用于IOS设备和MACOS...

    Objective-c对象组装XML

    [map setObject:@"c" forKey:@"content"]; 或者 NSMutableArray *list = [[NSMutableArray alloc]init]; NSMutableDictionary *map1 = [[NSMutableDictionary alloc]init]; [map1 setObject:@"a1" forKey:@...

    Objective-C开发工具包ytoolkit.zip

    ytoolkit 是 Objective-C 的一个常用开发工具包,包括: 一个快速的base64编码(纯C,及NSData/NSString的category),可以看项目页面的README和代码库里的benchmark,或者在ytoolkitdemo里跑profile一个cocoa附加...

    Objective-C学习心得

    Objective-C学习心得初学objective-c,自己写的一个demo,有不足之处请指正: 效果图:

    Python访问Objective-C类库Pyobjus.zip

    pyobjus 模块可以让你在 Python 中访问 Objective-C 的类。使用 Objective-C 的运行时反射技术。示例代码:from pyobjus import ObjcClass, ObjcMethod, MetaObjcClass class NSString(ObjcClass):  __objc...

    objcencryption:在 Objective-C 中实现的加密库。 AES、SHA、RSA

    在 Objective-C 中实现的加密库。 AES、SHA、RSA 该库旨在作为以Objective-C方式实施RSA / AES / SHA加密算法的实验。 那里有很多加密库,但我没有找到一个具有纯 Objective-C(或面向对象)API 的库。 这个实现...

    Objective-C 2.0程序设计

    前几天提前看到了新出的&lt;Objective-C 2.0 程序设计&gt;, 也就是&lt;Programming in Objective-C 2.0(Section Edition)&gt;的中文翻译版, 翻看了几章, 总体上感觉还是不错的. 翻译的质量我觉得比较满意吧. 个人觉得, 对一个还...

    objective-c-jwt-simple:用于对 Json Web 令牌进行编码解码的 Objective-c 库

    JSON Web 令牌的 Objective-c 实现。 在 iOS/MacOS 应用程序上编码和解码 JWT 的简单方法。 哈希算法 SHA256 SHA3​​84 SHA512 应用程序接口 + (NSString *) encodeWithPayload:(NSDictionary *) andKey:...

    Objective-C---How-to-Create-And-Use-NSString-Latest-2017-Hindi-:源代码-How to use the source code

    Objective-C-如何创建和使用NSString最新2017-印地语- 视频:-Yogesh Patel在Objective-C中使用NSString类的介绍。 在本频道中,我将在多部视频中讲授大多数目标C编程语言。 一定要去MyChannel享受视频和不要忘记...

    objective-c小技巧

    objective-c小技巧 1. 使用@property和@synthesize声明一个成员变量,给其赋值是时要在前面加上"self.",以便调用成员变量的setmember方法。 直接调用成员变量并且给其赋值:member=[NSString stringWithFormat...

    Objective-C中字符串NSString的常用操作方法总结

    NSString *string = [[NSString alloc] init]; string = @”i am an iOSDevTip too!”; (3)用initWithString创建字符串 代码如下: NSString *string = [[NSString alloc] initWithString:@”iOSDevTip is here!”...

    Object-C语言教程&案例,要点难点,代码示例,代码解析

    基础语法:熟悉C语言基础是前提,Objective-C是在C语言的基础上增加了面向对象特性。 面向对象:理解类(Class)、对象(Object)、实例变量(Instance Variables)、方法(Methods)、继承(Inheritance)、封装...

    Objective-c解析XML封装

    -(NSMutableDictionary *)getObject:(NSString *)elName xmlData:(NSData *)xmlData; -(NSMutableArray *)getList:(NSString *)elName xmlData:(NSData *)xmlData; @end --- XmlResolve.m #import ...

    FFCTemplate:Objective-C中基于模型的模板

    Objective-C中的一个简单的模板渲染器。 用对象属性,方法和填充模板。 用法 给定 @interface MYObject : NSObject @property ( nonatomic , copy ) NSString *color; @property ( nonatomic , copy ) NSNumber *...

Global site tag (gtag.js) - Google Analytics