我的OC成长之路(复习之字符串)

注意点:

1.fromIndex,toIndex,withRange

从哪个位置其到尾,从开头到哪个位置,从哪到哪之间的位置。

不过,这里需要注意的是,这个index是数组的下标的。从0开始算。

2.NSMutableString继承于NSString,NSString能用的方法,NSMutableString都能用。

3.NSMutableString追加字符串时,本身序列发生变化,无需重新赋值

一、不可变字符串NSString

1. 初始化方法

unichar data[6] = {97 , 98 , 99 , 100 , 101, 102};
//1. 使用数组初始化字符串
NSString* str = [[NSString alloc]
initWithCharacters: data length:6];
NSLog(@"%@" , str);
char* cstr = "Hello, iOS!";
//2. 将C风格的字符串转换为NSString对象
NSString* str2 = [NSString stringWithUTF8String:cstr];
NSLog(@"%@" , str2);
//3. 将字符串写入指定文件,并读取文件内容,用文件内容初始化字符串[str2 writeToFile:@"myFile.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil]; NSString* str3 = [NSString stringWithContentsOfFile:@"NSStringTest.m" encoding:NSUTF8StringEncoding error:nil]; NSLog(@"%@" , str3);

2.功能

NSString* str = @"Hello";
NSString* say = @"Hi";
// 1.在str后面追加固定的字符串
str = [str stringByAppendingString:@",iOS!"];
NSLog(@"%@" , str);
const char* cstr = [str UTF8String];
NSLog(@"获取的C字符串:%s" , cstr);
// 2.在str后面追加带变量的字符串。
str = [str stringByAppendingFormat:@"%@是一句很友好的话."
			, say];
NSLog(@"%@" , str);
NSLog(@"str的字符个数为:%lu" , [str length]);
NSLog(@"str按UTF-8字符集解码后字节数为:%lu" , [str lengthOfBytesUsingEncoding:NSUTF8StringEncoding]);
// 3.获取str的前10个字符组成的字符串
NSString* s1 = [str substringToIndex:10];
NSLog(@"%@" , s1);
// 4.获取str的从第5个字符开始,与后面字符组成的字符串
NSString* s2 = [str substringFromIndex:5];
NSLog(@"%@" , s2);
// 5.获取str从第5个字符开始,到第15个字符组成的字符串
NSString* s3 = [str substringWithRange:NSMakeRange(5, 15)];
NSLog(@"%@" , s3);
// 6.获取iOS在str中出现位置
NSRange pos = [str rangeOfString:@"iOS"];
NSLog(@"iOS在str中出现的开始位置:%ld, 长度为:%ld"
// 7.将str的所有字符转为大写
str = [str uppercaseString];
NSLog(@"%@" , str);

二、可变字符串NSMutableString

NSString* say = @"HI";
// 创建一个NSMutableString对象
NSMutableString* str = [NSMutableString stringWithString:@"Hello"];
// 1.追加固定字符串
[str appendString:@",iOS!"];
NSLog(@"%@" , str);
// 2.追加带变量的字符串
[str appendFormat:@"%@是一句很友好的话." , say];
NSLog(@"%@" , str);
// 3.在指定位置插入字符串
[str insertString:@"xxx" atIndex:6];
NSLog(@"%@" , str);
// 4.删除从位置6到位置12的所有字符
[str deleteCharactersInRange:NSMakeRange(6, 12)];
NSLog(@"%@" , str);
// 5.将从位置6到位置9的字符串替换成enen
[str replaceCharactersInRange:NSMakeRange(6, 9)withString:@"enen"];
NSLog(@"%@" , str);

  

  

时间: 2024-08-06 19:17:18

我的OC成长之路(复习之字符串)的相关文章

OC成长之路 <一> 位运算符、枚举、(原码,补码,反码)、以及NSInteger,NSUInteger,int的区别

引言: 咳咳,首先我是一枚资深小白(资深小白- -.也太衰),这个博客是自己用来记录迷糊犯二的东西. 最近发现难道是因为老了么(我明明18....),很多东西,脑子已经不记得了,迷迷糊糊,概念理论的东西脑子里面七零八落. 从一个知识点跳到另一个知识点,简直是连环事故. ??sad. 傲娇的我不服,决心要认认真真做好笔记,记录期间遇见的种种. 生活要有仪式感,学习应该也是要这样,作为Chapter 1 ,应该要起个好名字. 想了几十分钟,还是随便一些吧. 那就叫: OC成长之路 okok,来开始今

我的OC成长之路(复习)

一.数组 1.简单的数组排序(sortedArrayUsingSelector:) NSArray *array = @[@123,@7889,@231]; NSArray *sortArray =[array sortedArrayUsingSelector:@selector(compare:)]; NSLog(@"%@",sortArray); //字符串对比,会根据逐个字符进行对比排序 NSComparisonResult compare(id obj1,id obj2){ i

我的OC成长之路(复习之日期与时间)

注意: 1.计算当月内的日历 计算一个月内总共有几天: // 获取当月的天数 - (NSInteger)getNumberOfDaysInMonth { NSCalendar * calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; // 指定日历的算法 NSDate * currentDate = [NSDate date]; // 这个日期可以你自己给定 NSRange range =

我的OC成长之路(复习之数组)

注意: 1.因为数组和字典中存放的只能是对象类型. 所以一般的数值是不能直接存入的, 只能转化成对象元素才能存入! 2. NSArray 用于对象有序集合 NSSet 用于对象无序集合 NSDictionary 用于键值映射 3.数组中所有元素不能是基本数据类型,否则会编译报错,如果有需要封装成NSNumber类或NSValue类. 4.数组在NSLog中可以作为对象直接输出,此时建议重写NSObject的-(NSString *)description方法. 5.数组中可以存储自定义类的对象,

我的OC成长之路(日期与时间)

一.NSDate NSDate对象代表日期与时间,Objective-C提供了类方法来创建NSDate对象,也提供了大量init开头的方法来初始化NSDate对象. ①获取代表当前日期.时间的NSDate NSDate *date1 = [NSDate date]; ②获取从当前时间开始1天之后/三天之前的日期 NSDate *date2 = [[NSDate alloc]initWithTimeIntervalSinceNow:3600*24]; NSDate *date3 = [[NSDat

我的OC成长之路(文件管理)

注意: 措施名称 描述 -(NSData *)contentsAtPath:path 从path所代表的文件中读取数据 -(BOOL)createFileAtPath:path contents:(BOOL)data attributes:attr 将数据写入文件 -(BOOL)removeFileAtPath:path handler:handler 将path所代表的文件删除 -(BOOL)movePath:from toPath:to handler:handler 移动或者重命名文件,t

我的OC成长之路(UI-View)

一.UIVIew 属性 1.frame 位置和尺寸(以父控件的左上角为原点(0,0)) 2.center 中点 (以父控件的左上角为原点(0,0)) 3.bounds 位置和尺寸(以自己的左上角为原点 (0,0)) 4.transform 形变属性(缩放,旋转) 5.backgroundColor 背景颜色 6.tag 标识(父控件可以根据这个标识找到对应的子控件,同一个父控件中的子控件不要一样) 7. hidden 设置是否要隐藏 8.alpha 透明度(0~1); 9.opaque 不透明度

菜鸟程序员的成长之路(三)——2014,逝去的半年,奋斗的半年

从3月份到现在,仅仅半年的时间让我扮演了两个完全不同的角色,从在校生一下变成了毕业生,作为毕业生不能再像在校生一样自由自在,无所顾忌,想怎样就怎样,肆无忌惮的生活,浪费时间.如果你想从容的面临未来的生活,就需要彻头彻尾的改变.多一份稳重,多一份责任,多一份担当. 鉴于LZ不太擅长写非技术博文,那就以碎碎念的形式,来回顾一下我的奋斗历程: 技术 3月份开始备战软考,软考准备了两个多月的时间,从看视频做笔记,再到大家一起讲课,复习,做试题巩固,整个过程至今历历在目.软考虽然不难,但是对于基础差的同学

大二女生web开发成长之路——讲述我从软妹子到女汉子的进阶过程

学习和实践前端一年时间,几乎天天在工作室和一群屌丝男程序员一起学习.开发.这种潜移默化的环境下,编码提高了,节操也细碎了. 一年前,娇滴滴的还是工作室里面小师妹一枚,软软的软件工程妹子,做不到人见人爱,但在这个据说男女比例8比1的学校中,仍是比较受欢迎群体——女生中的一员. 然而,    回想过去这一年,跟一帮大老爷们坐在一起讲蛋疼的笑话: 工作室聚餐中满怀“邪”意地企图把师兄们灌醉: 为了赶项目,可以经常和某位苦逼男一起debug到两三点,不亦乐乎: 男生唤我作欣姐,各种玩笑各种开,因为都不拿