在OC中,字符串的关键字是NSString,定义在Foundation框架中,是字符的链表,是一个对象;字符串对象有unicode字符的数组组成,一般来说,字符串一般分为两种:不可变字符串和可变字符串。
不可变字符串
顾名思义,不可变字符串就是不可以变的字符串,也就是定义了之后就不能改变它了(如:大小,内容)。
不可变字符串的初始化
- 用@”“符号来声明一个不可变字符串,如:
NSString *str = @"这是一个字符串";
- 用NSString的stringWithString:方法来声明一个字符串,这个方法其实和上面的一样,不如直接用上面的那个方法,如:
NSString *str = [NSString stringWithString:@"这是一个字符串"];
- 用NSString的stringWithFormat:方法来拼接成一个字符串,如:
NSString *str = [NSString stringWithFormat:@"下个月是%i月",5];
- 用C字符串转换的方式来生成一个字符串,如:
NSString *str = [NSString stringWithUTF8String:"这是一个C字符串转OC字符串"];
- 从文件中读取,如:
NSString *str = [NSString stringWithContentsOfFile:@"/Users/froda/Desktop/test.txt" encoding:NSUTF8StringEncoding error:nil];
- 从URL读取,如:
NSString *str = [NSString stringWithContentsOfURL:@"www.baidu.com" encoding:NSUTF8StringEncoding error:nil];
- 从NSData中读取,如:
NSString *str = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding];//response是一个NSData类型
可变字符串
可变字符串用关键字NSMutableString表示,是NSString的子类,从字面上就可以知道可变字符串可以被修改。
可变字符串的初始化
- 可变字符串是NSString的子类,也就是说不可变字符串的初始化方法都能用于可变字符串,一般可变字符串初始化用下面这2种方法:
NSMutableString *mtStr = [NSMutableString alloc]init];//只是分配了一块内存给一个变量名为mtStr的变量
NSMutableString *mtStr = @"";//一个空的可变字符串
字符串的一些常用方法
NSString *str = @"I am froda !";
NSString *aStr = @"I am xiaofei .";
- 获取长度
unsigned long len = [str length];//字符串的length方法会返回一个unsigned long的长度
- 判断两个字符串是否相等
BOOL isEq = [str isEqualToString:@"I am xiaofei"];//该方法是判断两个字符串是否相等
- 判断是否有某某前缀或者后缀
BOOL hasPrefix = [str hasPrefix:@"I"];//是否以字符串“I”开头
BOOL hasSuffix = [str hasSuffix:@"fei"];//是否以字符串“I”结尾
- 转换字符串的大小写
NSString *aString = [str uppercaseString];//会将字符串str所有小写的字符转换为大写的形式
NSString *aaString = [aString lowercaseString];//会将字符串aString所有的大写字符转换为小写的形式
NSString *aString = [str capitalizedString];//首字母大写,其它字符不管是大写还是小写都会以小写的形式呈现
- 以一定的字符把字符串切割,如:
NSString *oneStr = @"北京,上海,广东,贵阳";
NSArray *array = [oneStr componentsSeparatedByString:@","];
NSLog(@"%@",array);//结果:(北京,上海,广东,贵阳)
总结
字符串在我们的开发中使用的频率非常高,当我们想对字符串有什么操作的时候,先查查文档,有的方法就不用自己写了。