iOS开发之OC入门(NSString)

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!";//错误
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值