`

【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编程全解最新版.pdf.zip

    1. **Objective-C基础**:Objective-C是在C语言基础上扩展的,因此,理解C语言的基本语法是必要的。Objective-C添加了消息传递机制、类和协议等面向对象特性。 2. **消息传递**:Objective-C中的对象通过发送消息来...

    Objective-C与Objective-C++的混用代码示例

    Objective-C是基于C语言的,主要用于构建iOS和macOS应用程序,而Objective-C++则是Objective-C的一个扩展,它引入了C++的特性,使得开发者可以同时利用Objective-C的动态特性和C++的面向对象编程能力。 ### ...

    Object-C语言教程:Objective-C 简介

    ### Objective-C语言简介 #### 一、Objective-C概述 Objective-C是一种主要应用于苹果操作系统上的编程语言,它是C语言的一种扩展,支持面向对象编程特性。Objective-C最初由Pike International公司的Brad Cox和...

    Objective-C程序设计 第6版 pdf

    1. **Objective-C基础**:Objective-C是在C语言基础上扩展的,因此它包含了C的所有特性。书中会讲解基本的数据类型、控制结构、函数和指针等基础知识,同时介绍Objective-C特有的动态类型和消息传递机制。 2. **...

    Objective-C

    Objective-C是在C语言的基础上扩展了Smalltalk式的面向对象特性,使得它既有C语言的强大功能,又具备了面向对象编程的灵活性。 在Objective-C中,类是所有对象的基础。类定义了一组属性(实例变量)和方法(函数)...

    Object-C语言教程-提供了 Objective-C 的基本语法和一些示例,希望能够帮助你快速入门 Objective-C

    #### 一、Objective-C简介 **Objective-C**是一种结合了C语言的基础特性和Smalltalk式消息传递机制的面向对象编程语言。作为C语言的一个超集,Objective-C允许开发者直接使用C语言代码。此外,它还借鉴了C++的一些...

    Objective-C基础教程(Learn Objective-C)随书源码下载

    Objective-C是C语言的超集,它扩展了C语言,加入了面向对象的特性。面向对象编程(OOP)的核心概念包括类、对象、继承、封装和多态。Objective-C通过消息传递机制实现了这些概念,使得代码更加模块化和可维护。 2....

    objective-c编程 第2版=objective-c program 2nd edition_13889311

    Objective-C编程第二版,可能是为了适应技术的更新和开发者的需求而进行的一次修订,旨在帮助程序员深入理解和熟练掌握Objective-C语言。 Objective-C是C语言的超集,它在C的基础上添加了面向对象的概念,如类、...

    Objective-C语言教程、案例与项目资源详解.docx

    ### Objective-C语言教程、案例与项目资源详解 #### 一、Objective-C基础知识 **1.1 类与对象** Objective-C的核心概念是类和对象。类是对象的模板或蓝图,它定义了对象应该具备哪些属性(如变量)和行为(如方法...

    Objective-C - Learning Objective-C 2.0 Second Edition

    #### 一、Objective-C简介 Objective-C是一种面向对象的编程语言,它在标准C的基础上添加了面向对象的特性。这种语言最初由Brad Cox和Tom Love在1980年代初开发,并于1988年被苹果公司采用,成为其Mac OS X和iOS...

    Objective-C语法概要

    #### 一、Objective-C简介 Objective-C是一种结合了C语言与面向对象特性的编程语言。它最初由Stepstone公司开发,并被苹果公司在开发macOS和iOS应用时广泛采用。Objective-C通过动态消息传递机制实现了面向对象编程...

    Objective-C中NSString的各种用法

    Objective-C 语言中的 NSString 是一种常用的字符串类型,提供了许多实用的方法来操作字符串。本文将对 NSString 的各种用法进行总结,包括创建、截取、判断比较、转化数据类型、拼接、替换等。 一、创建字符串 ...

    Objective-C 编程语言.pdf

    3. **C语言的超集**:由于Objective-C是C语言的超集,因此可以在Objective-C程序中直接使用C语言的语句和数据类型,这使得Objective-C具有很高的兼容性。 4. **内存管理**:Objective-C早期版本使用引用计数的方式...

    Objective-C经典面试题

    在Objective-C领域,面试题往往涵盖C语言基础、Objective-C语言特性以及iOS相关知识。本次整理的“Objective-C经典面试题”中的知识点,主要针对C语言中的指针概念、Objective-C语言的数组和指针操作、宏定义及使用...

    Objective-C程序设计

    首先,Objective-C是在C语言基础上扩展的,它引入了消息传递机制和类的概念,这使得它具有高度的灵活性和可扩展性。在Objective-C中,对象通过发送消息来执行操作,这种机制类似于其他语言中的方法调用。消息传递的...

    Learn Objective-C 中文版 v2

    这个"Learn Objective-C 中文版 v2"的学习资源可能是针对那些希望深入理解Objective-C语言特性和编程实践的开发者设计的。下面我们将详细探讨Objective-C的关键知识点。 1. **面向对象编程基础**: - **类与对象**...

    Google的Objective-C编码规范

    Objective-C是一种基于C语言的扩展,强调动态特性和面向对象设计,是Mac OS X和iOS开发的主要语言。Cocoa是Mac OS X的主要应用框架,包含一系列Objective-C类,用于快速构建功能丰富的OS X应用程序。Apple提供了一套...

Global site tag (gtag.js) - Google Analytics