NSString
-
NSString
是一个数据类型,保存OC字符串,本质是一个类 -
NSString
对象的创建方式,存储在堆区 -
占位符为
%@
,打印指针变量指向的对象 -
占位符为
%p
,打印指针变量的值 -
快捷创建方式(简写方式),指针存储在栈,对象存储在常量区(数据段)
NSString *str4 = @"Hello!";
NSLog(@"str4=%@",str4); // %@打印指针指向的对象,%p打印指针变量的值,打印地址
- 常用类方法
- [NSString stringWithUTF8String:XXX] 将C语言的字符串转化为OC字符串
- [NSString stringWithFormat:XXX] 拼接OC字符串,可以用变量或者其他数据
- 常用对象方法
- [对象名 length] 返回字符个数,可以处理中文
- [对象名 characterAtIndex: num] 返回第num个字符
- [对象名 isEqualToString: str2] 判断是否相等
- [对象名 compare:str2] 判断字符串大小,可以使用int接受结果,返回值是一个枚举,-1小于 0等于 1大于
- NSString的恒定性,当在内存创建一个字符串对象以后,这个字符串对象的内容就无法更改,本质是:重新创建一个字符串对象,将其地址赋值给字符串指针变量
// 没用的方法
NSString *str1 = [NSString new];
NSString *str2 = [[NSString alloc] init];
NSString *str3 = [NSString string];
-
系统准备在内存创建字符串对象的时候,会先检查内存中是否有相同内容的字符串对象,如有直接指向,没有重新创建,所以相同内容的
NSString
,指向同块内存 -
存储在常量区的数据不会被回收
NSString比较
// 字符串比较
-(NSComparisonResult)compare:(NSString *)string;
// 判断字符串是否以指定的字符串开头
-(BOOL)hasPrefix:(NSString *)str;
// 判断字符串是否以指定的字符串结尾
-(BOOL)hasSufix:(NSString *)str;
// 在主串中搜索子串(从前往后搜,第一次匹配的子串)
-(NSRange)rangeOfString:(NSString *)searchSrting;
//在主串中搜索子串(从后往前搜)
NSString *str = @"Hello!";
NSRange range = [str rangeOfString:@"love" options:NSBackwardsSearch];
NSString字符串按照特定字符分割成数组
NSString *str =@"Rem【ar【k";
NSArray *array = [str componentsSeparatedByString:@"【"]; //字符串按照【分隔成数组
NSLog(@"array=%@=",array); //结果是
字符串的截取
-(NSString *)substringFromIndex:(NSUInteger)from;//从指定的下标一直截取到最后
-(NSString *)substringToIndex:(NSUInteger)to;//从第0个开始截取指定的个数
-(NSString *)substringWithRange:(NSRange)range;//截取指定的一段范围
字符串的替换
- 将字符串中第一个参数替换为第二个参数
- 提示:原来指针指向字符串的内容是不会改的,会全部替换
- 新的字符串是以方法的返回值返回的
- 这个方法可以做删除,原理:替换为@“”
-(NSString *)stringByReplacingOccurencesOfString:(NSString *)target withString:(NSString *)replacement
字符串数据转换为其他类型
- 从头转化,能转多少就多少,遇到不能转换就停止转换
@property(readonly) double doubleValue;
@property(readonly) float floatValue;
@property(readonly) int intValue;
@property(readonly) NSInteger integerValue;
@property(readonly) long long longlongValue;
@property(readonly) BOOL boolValue;
去掉字符串前后的空格
- 中间空格无法去掉
str = [str stringByTrimmingCharactersInSet:[NSCharaterSet whitespaceCharacterSet]];
NSMutableString
Foundation
框架的一个类,从NSString
继承,所以NSMutableString
对象是用来存储字符串数据的
NSMutableString
在父类NSString
的基础之上做扩展,存储在NSMutableString
对象的字符串可以更改,具备可变性,不会重新创建对象,大量拼接,修改时使用
NSMutableString *str = [NSMutableString string];
-(void)appendString:(NSString *)aString;//直接追加字符串
-(void)appendFormat:(NSString *)format;//拼接字符串
[str appendString:@"Hello"]
[str appendString:@"James"]
// Helo James
int test = 886;
[str appendFormat:@"how are you?",test];
// Helo James how are you? 886
- 该创建方式是子类指针指向父类对象,不可行
NSMutableString *str = @"Hello!";//错误