代码改变世界

Objective-C语法之字符串NSString

2012-06-14 14:17  htc开发  阅读(147)  评论(0编辑  收藏  举报

Objective-C里核心的处理字符串的类就是NSString和NSMutableString这两个类,这两个类完成了Objective-C中字符串大部分功能的处理。这两个类的最主要的区别是NSString创建赋值后不能动态修改长度和内容,除非给重新赋值。而NSMutableString类似与链表的,在创建赋值后可以进行修改长度,插入,删除等操作。

注:以下代码运行环境是:XCode 4.3.2 ,IOS 5.1。

NSString提供了许多创建和初始化新字符串的方法。下面这个是创建常量字符串的。 它是编译到可执行文件中的NSString的实例,它不会在内存中消失。例子:

1、创建常量字符串。

NSString *astring = @"我是字符串";

2、NSString的内存地址

当我们声明一个字符串时,NSString *aString;
变量aString并不是真正包含一个字符串对象,它是指向内存中字符串对象的指针,我们称之为对象标识符,因为它是表示内存中的一个对象而不是保存这个对象,指针是一个内存位置的地址,下面考虑用“==”来比较字符串,来看个例子
NSString string1 = @"我是甲一号";
NSString *string2 = @"我是甲一号";
BOOL result = string1==string2;
这个result的值是NO,这里你对比的是内存地址,string1和string2是两个静态的对象,在内存中存储的地址是不同的,所以就是NO了。
如果这样做
NSString *string1 = @"我是甲一号";
NSString *string2 = string1;
BOOL result = string1==string2;

这时候result的值就是YES了

看个例子就明白了。下面是字符串内存地址的例子

打印结果如下:

重新赋值后,astring 的地址和bstring地址一样了。

3、NSString字符串的比较

在NSString中,最直接的就是用isEqualTostring这个方法

打印结果:

另外一个比较的方法:compare,他可以比较字符串的大小,它的返回类型是:NSOrderedAscending,NSorderedSame,NSorderedDescending(分别等于整数-1,0,1)。

4、字符串分割:

结果:

5、创建格式化字符串

格式化输出的符号

6、用标准c创建字符串:initWithUTF8String方法

结果:2012-06-14 13:47:23.956 NSString[2850:f803] astring:我是字符串


7、在串中搜索子串和替换

hasPrefixe 匹配字符串头
haSuffix     匹配字符串的尾巴


搜索和替换

结果:


看到"我"字的index了吗?第一位的索引值是0。

https://github.com/schelling/YcDemo

著作权声明:本文由http://blog.csdn.net/totogo2010/原创,欢迎转载分享。请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢!