#NSString类
1、创建方式:
1> NSString *str = @"abc"; // 定义在常量区
2> NSString *str1 = [NSString stringwithString:str]; // 定义在常量区,创建与str相同的字符串
3> NSString *str = [[NSString alloc] initWithString:@"abc"]; // 定义在常量区
4> NSString *str = [NSString alloc] initWithFormat:@"C字符串=%s, OC字符串 = %@", "abc", @"abc"]; // 堆区
5> NSString *str = [NSString stringWithFormat@"C字符串=%s, OC字符串 = %@", "abc", @"abc"]; // 堆区
2、字符串与基本类型的相互转换:
1> NSString *str = [NSString alloc] initWithUTF8String:"abc"]; // 将C语言字符串转成OC字符串
2> NSString *str = [NSString stringWithUTF8String:"abc"]; // 将C语言字符串转成OC字符串
3> NSString *str = [NSString stringWithFormat:@"%d", a]; // 将C语言基本数据类型转成OC字符串
4> const char *p = [str UTF8String]; // 将OC字符串转成C语言字符串
5> int a = [str intValue]; // 将数字串转成int类型
6> float a = [str floatValue]; // 将数字串转成float类型
7> double a = [str doubleValue]; // 将数字串转成double类型
3、获取字符串长度:
1> NSUinteger a = str.length; 或者 NSUInteger a = [str setLength];
4、OC字符串比较:(地址比较合内容比较)
1> str1 == str2; // 使用" == ",比较的是两个字符串的地址是否相等,不是比较的内容。
2> [str1 compare:str2]; // 比较两个字符串内容,str1 > str2,则返回1,等于返回0,小于返回-1。区分大小写的比较。
3> NSComparisonResult a = [str1 compare:str2 options:0]; // 区分大小写的比较,NSComparisonResult是枚举类型,str1 > str2,为降序返回NSOrderedDescending=1,等于为顺序返回NSOrderedSame=0,小于为升序返回NSOrderedAscending=-1。
4> NSComparisonResult a = [str1 caseInsensitiveCompare:str2]; // 不区分大小写的比较,NSComparisonResult是枚举类型,str1 > str2,为降序返回NSOrderedDescending=1,等于为顺序返回NSOrderedSame=0,小于为升序返回NSOrderedAscending=-1。
5> [str1 isEqualTo:str2]; // 比较两个字符串是否相等,相等返回YES,不相等返回NO。(区分大小写)
6> [str1 isEqualToString:str2]; // 比较两个字符串是否相等,相等返回YES,不相等返回NO。(区分大小写)
5、修改OC字符串:
1> NSString *str = [str uppercaseString]; // 将OC字符串中的所有小写字符转成大写。
2> NSString *str = [str lowercaseString]; // 将OC字符串中的所有大写字符转成小写。
3> NSString *str = [str capitalizedString]; // 将OC字符串中出现的第一个字母转成大写。
4> NSString *str1 = [str stringByTrimmingCharctersInset:[NSCharacterSet WhitespaceCharacterSet]]; // 去除OC字符串中前后空格。
5> NSString *str1 = [str substringFromIndex:4]; // 从第4个位置截取到字符串结尾,包含第4个位置。
6> NSString *str1 = [str substringToIndex:4]; // 从字符串开头截取到字符串第4个位置,不包含第4个位置。
7> NSString *str1 = [str substringWithRange: NSMakeRange(1,3)] // 截取字符串的某个范围。
8> NSString *str1 = [str stringByReplacingOccurrencesOfString:(NSString *) 旧内容withString:(NSString *) 新内容]; //将字符串中的旧内容替换成新内容
9> NSString *str1 = [path stringByAppendingPathComponent:@"game"] // /Users/Desktop --> /Users/Desktop/game,生成新的路径。
6、查询OC字符串:
1> BOOL b = [str hasPrefix:@"AAA"]; // 判断字符串是否有AAA前缀。
2> BOOL b = [str hasSuffix:@"AAA"]; // 判断字符串是否有AAA后缀。
3> unichar c = [str characterAtIndex:2]; // 查询字符串第2个位置的元素是啥。
4> NSRange r = [str rangeOfString:@"ab"]; // 在str字符串中查询字串ab的范围,返回一个NSRange结构体,找不到时r.location = NSNotFound,找到返回相应的location和length。
if (r.location != NSNotFound) { // NSNotFound == NSIntegerMax,最大值。
NSLog(@"@",NSStringFromRange(r));
}
5> NSRange r = [str rangeOfString:@"ab" options:0 range:NSMakeRange(1,5)];
// 在某个范围查询子串的位置。其中option接收一个位枚举的值,当不想设置这个值并且还想用这个方法是,就设置为0,表示我不想设置该值。
7、NSString的文件存取:
1> BOOL b = [str writeToFile:@"/User/thinkpad/DeskTop/a.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil];
// 将字符串保存到本地路径下,返回Yes表示写入成功;- (BOOL) writeToFile:文件路径 atomically:是否开启事务 encoding:设置字符编码 error:异常
2> BOOL b = [str writeToURL:[NSURL fileWithPath:@"/User/thinkpad/DeskTop/a.txt"] atomically:YES encoding:NSUTF8StringEncoding error:nil];
// 将字符串保存到URL路径下;返回Yes表示写入成功;- (BOOL) writeToURL:URL路径 atomically:是否开启事务 encoding:设置字符编码 error:异常
3> NSString *str = [NSString stringWithContentsOfFile:@"/User/thinkpad/DeskTop/a.txt" encoding:NSUTF8StringEncoding error:nil];
// 从本地路径下读取字符串,+ (instancetype) stringWithContentsOfFile:文件路径 encoding:设置字符编码 error:异常
4> NSString *str = [NSString stringWithContentsOfURL:[NSURL fileWithPath:@"/User/thinkpad/DeskTop/a.txt" encoding:NSUTF8StringEncoding error:nil];
// 从URL路径下将字符串取出;+ (instancetype) stringWithContentsOfURL:URL路径 encoding:设置字符编码 error:异常
8、练习:<itcast>船只墨客</itcast>标签中的数据。
NSString *str = @"<itcast>船只墨客</itcast>";
NSString *str1 = [str stringByReplacingOccurrencesOfString:@"<itcast>" withString:@""];
NSString *str2 = [str1 stringByReplacingOccurrencesOfString:@"</itcast>" withString:@""];
NSLog(@"%@", str2);
#NSMutableString:
1、介绍:NSMutableString是NSString的子类,并且NSString对象的内存空间的内容和大小都不可变,NSMutablestring对象的内存空间的内容和大小都可变。
2、创建方式:
1> NSMutableString *str = [NSMutableString string]; // 定义一个空串。
2> NSMutableString *str = [NSMutableString stringWithString:@"abc"];
2> NSMutableString *str = [NSMutableString stringWithFormat:@"a = %s", "abc"];
3> NSMutableString *str = [NSMutableString stringWithUTF8String:"abc"]; // 将C语言字符串转成OC可变字符串。
3、修改操作:
1> [str appendString:@"cdef"]; // 在字符串后追加内容
2> [str appendFormat:@"c = %s", "abc"]; // 追加格式化字符串
3> [str deleteCharactersInRange:NSMakeRange(1,2)]; // 删除指定范围的字符串。
4> [str insertString:@"AAA", atIndex:2]; // 在指定位置中插入字符串。
5> [str replaceCharactersInrange:NSMakeRange(1,2) withString:@"AAA"];
// 使用str字符串替换range范围内的字符串,range.length > str,则删除多余的位置,range.length < str,则增添缺失的位置。
6> str.string = @"abc"; // NSMutableString类中有string属性,可以使用该属性为该对象初始化。
4、常见错误:
1> NSMutableString *str = @"abc"; [str appendString@"xxx"]; // 运行时才会检查str的真实类型,不要使用子类指针变量(NSMutableString)指向父类的对象(NSString)。
2> 只有不做截取、拼接、替换操作的字符串,就使用NSString类型,若是涉及到这些操作,才使用NSMutableString类型。 |
|