——- ios培训、ios培训、期待与您交流! ———-
NSString是什么
NSString是Foundation框架里面的NSObject的一个子类.
这里学习的主要是Foundation中的一些函数和这个类中已经封装好的一些方法,重点罗列了几个比较常用的方法和函数.
NSString用法
1.直接创建方式:
NSString *str = @"abc";
- 格式化创建:
NSString *st2 = [NSString stringWithFormat:@"%@", @"jack"];//这种方式创建的字符串存储在堆区
NSString *str = [[NSString alloc] initWithFormat:@"My age is %d", ];//这种方式创建的字符串存储在常量区
3.文本编码:
中文 :GBK(3个字节) GB2312(3个字节)
UTF - 8:国际通用编码(2个字节)
- 字符串写入文件:
//这里使用的就是UTF-8文本编码
[str writeToFile:@"/Users/zhaoxiaohu/Desktop/" atomically:YES encoding:NSUTF8StringEncoding error:&err];
5.字符串从文件读取:
NSString *str = [NSString stringWithContentsOfFile:@"/Users/mac/Desktop/str.txt" encoding:NSUTF8StringEncoding error:&err];
6.字符串比较函数:
NSComparisonResult result = [str1 compare:str2 options:NSCaseInsensitiveSearch|NSNumericSearch];
返回值:NSOrderedAscending(str1<str2)
NSOrderedDescending(str1>str2)
NSOrderedSame(str1 = str2)
- 判读字符串是否相等:
- 检测字符串前后缀:
NSURL *url=[NSURL URLWithString:@"http://www.itcase.com"];
[url hasPrefix:@"http://"]; 字符串是否以http://开头
[imgName hasSuffix:@"com"]; 检测字符串是否以.com结尾
9.从一个字符串中找到另一个字符串的位置:
range是一个结构体,上面方法返回的是str1在str2中的位置和所占长度.
10.字符串的截取
NSString *str = @"http://www.baidu.com";
//1) 从xx位置开始,到最后结束(包含xx这个位置的字符)
NSString *str1 = [str substringFromIndex:];
NSLog(@"str1 = %@",str1);
//2) 从开始位置,到xx位置结束(不包含xx这个位置)
NSString *str2 = [str substringToIndex:];
NSLog(@"str2 = %@",str2);
//3) 截取一个范围 range
NSRange r1 = {,};
NSString *str3 = [str substringWithRange:r1];
NSLog(@"str3 = %@",str3);
11.字符串的替换
NSString *str =@"asdfsdafasdfdasdfsa";
NSString *newStr = [str stringByReplacingOccurrencesOfString:@"a" withString:@"*"];
以上是把str字符串中”a”换成”*”
12.OC的字符串和 C的字符串互相转换问题
) C---->OC对象
char *s = "zhangsanfeng";
printf("%s\n",s);
//思路:创建一个OC的字符串对象,用C语言的字符串创建
NSString *str = [NSString stringWithUTF8String:s];
NSLog(@"str = %@",str);
//2) OC对象 --> C的字符串
NSString *str2 = @"zbz";
// 把str2 转 C的字符串
const char *s1 = [str2 UTF8String];
关于NSString的一些思考
1.NSString直接创建的字符串都是不可变的,上面方法中有替换方法,本质上是在常量去重新创建一个新的字符串,然后把新的字符串的地址重新赋给原来字符串的指针.
2.NSString类中包含很多方法,有的是类方法,有的是对象方法,当方法,类方法由类调用,对象方法由对象调用.
3.NSString创建的字符串是一个对象,是char* 类型.
NSMutableString
NSMutableString是NSString的一个子类,可以创建可变的字符串.
它可以使用NSString中所有的方法.
可变的字符串的意思就是:这个字符串所在的空间可以不固定,可以往这块空间里面增加或者减少元素.
NSMutableString几个特有的方法
1.创建一个可变的空字符
NSMutableString *str3 = [NSMutableString string];
- appendFormat 格式化的添加字符串
[str appendFormat:@"http://www.baidu.com/%d",];
- 删除字符串一部分内容
4.插入一个字符串
[str insertString:@"p://" atIndex:];
5.替换字符串的一部分内容
[str replaceCharactersInRange:NSMakeRange(, ) withString:@"itcast"];
关于NSMutableString的几点思考
1.NSMutableString创建的是可变的字符串,这个字符串的空间可变
2.NSMutableString str=@”abc”;这种创建方式是错误的,这种创建方式默认的是创建了一个不可变的字符串,显然不符合逻辑.
3.NSMutableString对字符串操作时空间大小可以改变,而空间的位置没有变,NSString在对字符串操作的时候,本质上是一个不断创建新字符串的过程,只不过是用指针不断指向不同的空间而已.