Objective-C 征程:String Party

Objective-C 征途:String Party

        这是Objective-C Party系列的第二篇,在这里,我会介绍数据类型的一个元素------字符串。字符串在开发编程的过程中,几乎是不可或缺的,其实Objective-C上的字符串与其他开发语言的字符串没有太大的分别,都是用来显现数据的!Cocoa中用来处理字符串的类就是NSString,我会在这里介绍NSString的创建、获取大小、比较、搜索字符、可变性,通过这一部分的学习,我们就可以大概掌握NSString日常出现得比较频繁的用法!

        1.创建

         用得比较多的一个类方法就stringWithFormat:,stringWithFormat:就是一个工程方法,它会根据你提供的参数创建新的NSString对象。当然还有其他很多方法来创建NSString,但就不再这里详述了,大家有兴趣可以查看IOS SDK帮助文档。

         再看stringWithFormat:的原型,首先要注意的地方时,stringWithFormat:函数是用前导加号(+)来开始声明,就是说stringWithFormat:是一个类方法;第二个就原型末尾的参数表示省略号(...),表示该函数接受多个参数来格式化、生成新的NSString对象。

        

         2.获取大小

         这里获取大小所要说的内容比较少,就是获取字符串的字符长度,方法返回的是字符串中字符的个数(无符号整形),我直接上一段代码。

         

         3.比较

          比较是字符串常见的操作。但在比较的过程中,有些程序员习惯性地使用‘==’比较符号来比较两个字符串,如果在C#或者java开发语言上,可能会得到你想要的结果,但是Objective-C是C语言的扩展集,对字符串的处理也沿用了C语言的风格。使用‘==’来比较两个字符串,只是比较他们的指针值,而不是他们的值。

 

         

          如果按照这样的方法来输出结果:They are same!

          把isEqualToString:改成==,得到的结果却是:They are not the same!

          个中的原理,我想大家也很了解了!用于比较的方法还有一个,是很有用的:

 

         

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

 

        

         compare:进行的是区分大小写的比较。Objective-C还有一个方法compare:options:,它能给我们更多的控制权。options参数是一个位掩码。你可以使用或运算符(|)来添加选项标记。常用的选项:

          *  NSCaseInsensitiveSearch: 不区分大小写字符。

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

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

          如果你想忽略大小写和字符个数,那么就可以这样编写代码:

 

        
        4.可变性

      NSString是不可变的,但是你可以用它来生成新的对象,查找字符等。但是你不能以删除或者增加字符的形式来改变它。所以Objective-C考虑到这一点,添加了NSString的一个子类:NSMutableString。使用NSMutableString可以预分配一块内存去存储它,这样后续的操作就会快很多。

 

        先看一下上面的例子。第一行,首先创建了NSMutableString对象,要注意的是50这个参数是要来有何用的呢?50是NSMutableString对象初始化的时候预分配的一个字符长度,也就是说,可以在NSMutableString对象中添加50个字符。这里并没有把对象的长度给定死,而是一个参考,如果对象的长度超过了50,便会自动增加自身的容量。

再看看第二、第三行代码,这里的原型是:

 


        都是用以给NSMutableString对象添加字符的方法。