NSMutableString
1.NSMutableString介绍和使用
NSMutableString继承自NSString,他更加灵活。
NSMutableString和NSString的区别:
(1)NSString里面的文字内容是不可变的,而NSMutableString里面的参数是可变的
//不可变:指的是字符串在内存中的存储空间固定,并且存储的内容不能发生变化
//可变:指的是字符串在内容中占用的存储空间不固定,并且存储的内容可以被修改
(2)使用例子
#import <Foundation/Foundation.h>
int main(int argc, const char *argv[]){
autoreleasepool{
NSString *str = @"Jack";//字符串常量在常量区
NSLog(@"str addr = %p",str);//在内存中的位置是A
str = @"Rose";
NSLog(@"str addr = %p",str);//在内存中的位置是B
NSMutableString *str2 = [NSMutableString stringWithFormat:@"Jack"];//在堆区
NSLog(@"str addr = %p",str2);//内存空间为C,在堆区
[str2 appendString:@"Rose"];
NSLog(@"str addr = %p",str2)//内存空间为C,在堆区
NSLog(@"str addr = %@",str2);//结果是“Jack@Rose”;
//创建一个可变的空字符
NSMutableString *str3 = [NSMutableString string];
for(int i; i < 10; i++){
[str3 appendString:@"itcast"];
}
}
return 0;
}
2.NSMutableString的常用方法
(1)appendString
(2)appendFormat//格式化的添加字符串
NSMutableString *str = [NSMutableString string];
[str appendFormat:@"http://www.baidu.com/%d",100];
NSLog(@"%@",str);//输出"http://www.baidu.com/100"
(3)deleteCharactersInRange//在字符串的指定位置删除字符串的一部分内容
NSMutableString *str = [NSMutableString string];
[str appendFormat:@"http://www.baidu.com/%d",100];
NSLog(@"%@",str);
[str deleteCharactersInRange:NSMakeRange(3,4)]//从第三个位置开始,往后删4个。并且返回值为0,
//因为该方法将已存在的内存缩小,地址没有改变
(4)insertString//没有返回值
NSMutableString *str = [NSMutableString string];
[str appendFormat:@"http://www.baidu.com/%d",100];
NSLog(@"%@",str);
[str deleteCharactersInRange:NSMakeRange(3,4)]
[str insertString:@"p://" atIndex:3];//在位置3之前插入
(5)replaceCharactersInRange
[str replaceCharatersInRange:NSMakeRange(11,5) wtithString:@"itcast"];
3.注意事项
(1)给可变字符串赋值了不可变的值,导致程序运行时出错
NSMutableString *str = @"abc";//@“abc”是NSString类型,而str是NSMutableString类型
//编译的时候,str认为自己是NSMutableString类型,不会报错
//但是动态类型只有在运行的时候,才会确定自己是什么类型,也就是说
//运行的时候,判断自己为NSString类型
[str appendString:@"xxxx"];
(2)NSMutableString中string属性,该属性可以将原来的字符串覆盖。
str.string = @" ";以空格覆盖
(3)开发中是使用NSString还是使用NSMutableString
绝大多数情况下,使用NSString,在需要对字符串的内容进行操作的时候,使用NSMutableString
(4)位枚举
|
|