黑马程序员————第四天
来源:互联网 发布:不亦说乎的上一句 编辑:程序博客网 时间:2024/06/18 16:36
字符串比较函数
compare
返回的结果三种
NSOrderedAscending,NSOrderedSame,NSOrderedDescending
升序 相同 降序
1 0 -1
NSComparisonResult result=[str compare:str2];
NSCaseInsensitiveSearch 比较时不区分大小心
NSLiteralSearch 进行完全比较区分大小写(默认)
NSNumbericSearch 比较字符串的字符个数,而不是字符值
NSComparisonResult result=[str compare:str2 options:NSCaseInsensitiveSearch|NSNumbericSearch];
判断字符串不能用==
而是用isEqualToString
[str1 isEqualToString:str3]
返回BOOL类型 YES NO
NSString前后缀检查
判断字符串前缀
file://
ftp://
https://
http://
判断地址是否是网址
检测一个字符串是否是http://或https://开头
[url hasPrefix:@"http://"];返回值是BOOL类型 url是一个字符串
检测字符串的后缀
[imgName hasSuffix:@".jpg"]判断后缀是否是.jpg
-(NSRange)rangeOfString:(NSString *)aString;
NSRange range=[str1 rangeOfString:str2];
range.location,range.length
2在1中首次出现的位置 和2字符串的长度
找不到返回NSNotFound最大的长整形数。
NSRange 的使用
NSRange是Foundation比较常用的结构体
表示事物的范围
range=(NSRange){5,3};
NSRange r3={.location=3};
NSMarkRange函数的作用给NSRange结构体变量赋值
NSRange r4=NSMarkRange(3,3);
NSStringFromRange(r4) 字符串形式查看
字符串的截取和替换
-(NSString *)substringFromIndex:(NSUInteger)from;
从指定位置from开始(包括指定位置的字符)到尾部
-(NSString *)substringToIndex:(NSUInteger)to;
从字符串的开头一直截取到指定位置to,但不包括该位置的字符
-(NSString *)substringWithRange:(NSRange)range;
按照所给出的NSRange从字符串中截取子串
NSUInteger loc=[str rangeOfString:@">"].location+1
NSUInteger len=[str rangeOfString:@"</"].location-loc
NSRange r2={loc,len};
NSString *substr=[str substringWithRange:r2];
[str stringByReplacingOccurrencesOfString:@"源字符串中的内容" withString:@"要替换的新内容"]
换取字符串的每个字符
Utf8 占三个字节
Gbk gb2313 占两个字节
Xcode 中英文都是一个字节
[str intValue]返回一个int类型的值
[str floatValue]
[str doubleValue]
OC的字符串和C的字符串相互转换
char*s="adadsd";
创建一个OC的字符串对象,用C语言的字符串创建
NSString *str=[NSString stringWithUTF8String:s];
OC对象转换成C的字符串
char * str2=[str1 UTF8String];
去除所有的空格
[str stringByReplacingOccurrenceOfString:@" "withString:@""]
去除首尾的空格
[str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
NSMutableString 基本概念
继承NSString类
相当于一个字符串链表可以任意的动态在字符串中添加字符串 删除,指定位置插入 使用他来操作字符串
NSString是不可变的 内容不能修改
NSMutableString是可变的,里面的文字内容可以随时改变
NSMutableString能使用NSString 所有的方法
NSMutableString *str2=[NSMutableString stringWithFormat:@"jack"];
[str2 appendString:@"&Rose"];
创建可变的空字符
NSMutableString *str3=[NSMutableString string];
NSMutableString 常用方法
通过调用string方法,创建一个空的NSMutableString
-(void)appendString:(NSString *)aString
拼接aString到最后面
-(void)appendFormat:(NSString *)format,...;
拼接一段格式化字符串到最后面
-(void)deleteCharactersInRange:(NSRange)range;
删除字符串的某些东西
-(void)insertString:(NSString*)aString atIndex:(NSInteger)loc;
在loc位置中插入aString
-(void)replaceCharactersInRange:(NSRange *)range withString:(NSString *)aString;
使用aString替换range范围内的字符串,一般不是以string开头的一般都不会产生一个新的字符串,这个方法不需要传范围参数
1.给一个可变的字符串赋值一个不可变的值
NSMutableString *ad=@"sdasd";
2.str.string属性 把原来字符串的内容给覆盖掉
3.开发绝大多数使用NSString
NSArray的介绍和基本使用
OC中的数组类
只能存放OC对象,并且是有序的。
不能存放非OC对象
他是不可变的,一旦初始化完毕后,它里面的内容就永远是固定的不能删除不能添加
NSArray的创建方式
+(instancetype)array;
+(instancetype)arrayWithObject:(id)anObject;
+(instancetype)arrayWithObjects:(id)anObject,...;
+(instancetype)arrayWithArray:(NSArray *)array;
+(instancetype)arrayWithOfFile:(NSString *)path;//读取一个ml文件
+(instancetype)arrayWithOfURL:(NSURL *)url;//读取一个xml文件
NSArray*arr3=[NSArray arryWithObjects:@"one",@"two",@1,nil];nil表示数组赋值结束
NSArray*arr3=[[NSArray alloc] initWithObjects:@"one",[NSNull NULL],@"two",@1,nil];调用对象方法创建数组
[NSNull NULL]输出显示为空而@""显示""
NSArray的常见用法
-(NSUInteger)count;获取集合元素个数
-(id)objectAtIndex:(NSUInteger)index;获取index位置的元素
-(BOOL)containsObject:(id)anObject;是否包含某一个元素
-(id)lastObject;返回最后一个元素
-(id)firstObject;返回第一个元素
-(NSUInteger)indexOfObject:(id)anObject;查找anObject元素在数组中的位置如果找不到返回-1NSNotFound
-(NSUInteger)indexOfObject:(id)anObject inRange:(NSRange)range;
在range范围内查找anObject元素在数组中的位置
str=arr[1];
数组使用注意
NSArray直接使用NSLog()作为字符串输出时是小括号括起来的形式
NSArray终不能存储nil,因为NSArray认为nil是数组的结束
NSArray的遍历
1.普通
2.快速枚举法
for(NSString *str in arr){}
3.使用block的方式,进行访问
[arr enumerateObjectsUsingBlock:^(id obj,NSUInteger idx,BOOL *stop){
if(idx==2){
*stop=YES;
}
else{
输出
}
}];
数组元素 下标是否停止
//YES 停止
//NO 不会停止
NSArray读写文件
NSArray数据写入到文件中
if[arr writeToFile:@"绝对地址的文件名/Users/apple/Desktop/arr.plist"atomically:YES]){NSLog(@"写入成功");}
NSArray与字符串
把数组元素链接成字符串
-(NSString *)componentsJoinedByString:(NSString *)separator;
这是NSArray的方法,用separator作拼接数组元素拼接成一个字符串
将字符串分割
-(NSArray *)componentsseparatedByString:(NSString *)separator;
NSMutableArray介绍
是可变的
NSMutableArray *arr=[NSMutableArray array];
NSMutableArray *arr2=[[NSMutableArray alloc] initWithCapacity:5];指定数组的长度
NSMutableArray *arr=[NSMutableArray arrayWithObjects:@"1",@"2",@nil];
NSMutableArray *arr3=[[NSMutableArray alloc] initWithObjects:@"1",@"2",@nil];
[arr1 addObject:@"fengjie"];添加元素 地址不变
[arr1 insertObject:@"zbz" atIndex:0];插入元素到什么位置
删除元素
[arr1 removeObject:@"zbz"];
根据位置删除
[arr1 removeObjectAtIndex:1];
删除全部
[arr1 removeAllObjects];
修改元素
[arr3 replaceObjectAtIndex:1 withObject:@"sdf"];
arr3[1]=@"five";
查找元素
[arr3 containsObject:@"for"];返回YES找到NO没找到
交换元素
[arr3 exchangeObjectAtIndex:0 withObjectAtIndex:4];可以交换数组元素
NSMutableArray错误用法
不能用@[@"",@"",@""];不可变数组去声明可变
NSDictionary
key value
是不可变的初始化之后内容就无法改变
NSDictionary的创建
+(instancetype)dictionary
+(instancetype)dictionaryWithObject:(id)object forKey:(id<NSCopying>) key;//objectForKey根据键取值
+(instancetype)dictionaryWithObjectsAndKeys:(id)firstObject,...;
一组键值对
NSDictionary *dict2=[NSDictionary dictionaryWithObject:@"张三" forKey:@"zs");
多组键值对
NSDictionary *dict2=[NSDictionary dictionaryWithObjectsAndKeys:@"张三",@"zs",@"value2",@"k2",nil);
输出 zs=zhangsan
字典的key和value都必须是对象
快速创建一个字典
@{,key值:value值,};
NSDictionary *dict4=@{@"zs":@"zhangsan ",@"ls":@"lisi"};
特点
1. key值不能重复
2.键值对存储的数据是无序的
3.键值对集合可以根据键快速取数据
-(NSUInteger)count;返回字典的键值对数目
-(id)objectForKey:(id)aKey;根据key取出value
字典的遍历
for循环遍历字典默认获取的是key值
for(NSString *key in dict4)
{
NSLog(@"%@%@",key,[dect4 objectForKey:key]);
}
key valuestop
dict4 enumrateKeysAndObjectsUsingBlock:^(id key,id obj,BOOL *stop)
{
NSLog(@"%@%@",key,obj);
}
NSDictionary的简写形式
@{};
NSDictionary获取元素
dict[@"name"];
NSDictionary文件操作
将字典写入文件中
-(BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile;
-(BOOL)writeToURL:(NSURL *)url atomically:(BOOL)atomically;
NSDictionary *readDict=[NSDictionary dictionaryWithContentsOfFile:@"路径"];
NSArray *lnArr = [NSArray arrayWithObjects:@"dalian ","shenyang",nil];
NSArray *hbArr=[NSArray arrayWithObjects:@"baoding",@"shijiazhuang",nil];
NSDictionary *citys=[NSDictionary dictionaryWithObjectsAndKeys:lnarr,@"ln",hbarr,@"hb",nil];
[citys writeToFile:@"路径/citys.plist" atomically:YES];
NSDictionary *cityDict=[NSDictionary dictionaryWithContentsOfFile:@"路径/citys.plist"];
[citysDict enumerateKeyAndObjectsUsingBlock:^(id key,id obj,BOOL *stop){
for(NSString *str in obj){
NSLog(@"%@",str);
}
};]
NSMutableDictionary介绍
常用方法
-(void)setObject:(id)anObject forKey:(id <NSCopying>)aKey;
添加一个键值对(会把aKey之前对应的值给替换掉)
-(void)removeObjectForKey:(id)aKey;
通过aKey删除对应的value
-(void)removeAllObjects;
删除所有的键值对
[dict1 setValue:@"lisi" forKey:@"ls"];
compare
返回的结果三种
NSOrderedAscending,NSOrderedSame,NSOrderedDescending
升序 相同 降序
1 0 -1
NSComparisonResult result=[str compare:str2];
NSCaseInsensitiveSearch 比较时不区分大小心
NSLiteralSearch 进行完全比较区分大小写(默认)
NSNumbericSearch 比较字符串的字符个数,而不是字符值
NSComparisonResult result=[str compare:str2 options:NSCaseInsensitiveSearch|NSNumbericSearch];
判断字符串不能用==
而是用isEqualToString
[str1 isEqualToString:str3]
返回BOOL类型 YES NO
NSString前后缀检查
判断字符串前缀
file://
ftp://
https://
http://
判断地址是否是网址
检测一个字符串是否是http://或https://开头
[url hasPrefix:@"http://"];返回值是BOOL类型 url是一个字符串
检测字符串的后缀
[imgName hasSuffix:@".jpg"]判断后缀是否是.jpg
-(NSRange)rangeOfString:(NSString *)aString;
NSRange range=[str1 rangeOfString:str2];
range.location,range.length
2在1中首次出现的位置 和2字符串的长度
找不到返回NSNotFound最大的长整形数。
NSRange 的使用
NSRange是Foundation比较常用的结构体
表示事物的范围
range=(NSRange){5,3};
NSRange r3={.location=3};
NSMarkRange函数的作用给NSRange结构体变量赋值
NSRange r4=NSMarkRange(3,3);
NSStringFromRange(r4) 字符串形式查看
字符串的截取和替换
-(NSString *)substringFromIndex:(NSUInteger)from;
从指定位置from开始(包括指定位置的字符)到尾部
-(NSString *)substringToIndex:(NSUInteger)to;
从字符串的开头一直截取到指定位置to,但不包括该位置的字符
-(NSString *)substringWithRange:(NSRange)range;
按照所给出的NSRange从字符串中截取子串
NSUInteger loc=[str rangeOfString:@">"].location+1
NSUInteger len=[str rangeOfString:@"</"].location-loc
NSRange r2={loc,len};
NSString *substr=[str substringWithRange:r2];
[str stringByReplacingOccurrencesOfString:@"源字符串中的内容" withString:@"要替换的新内容"]
换取字符串的每个字符
Utf8 占三个字节
Gbk gb2313 占两个字节
Xcode 中英文都是一个字节
[str intValue]返回一个int类型的值
[str floatValue]
[str doubleValue]
OC的字符串和C的字符串相互转换
char*s="adadsd";
创建一个OC的字符串对象,用C语言的字符串创建
NSString *str=[NSString stringWithUTF8String:s];
OC对象转换成C的字符串
char * str2=[str1 UTF8String];
去除所有的空格
[str stringByReplacingOccurrenceOfString:@" "withString:@""]
去除首尾的空格
[str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
NSMutableString 基本概念
继承NSString类
相当于一个字符串链表可以任意的动态在字符串中添加字符串 删除,指定位置插入 使用他来操作字符串
NSString是不可变的 内容不能修改
NSMutableString是可变的,里面的文字内容可以随时改变
NSMutableString能使用NSString 所有的方法
NSMutableString *str2=[NSMutableString stringWithFormat:@"jack"];
[str2 appendString:@"&Rose"];
创建可变的空字符
NSMutableString *str3=[NSMutableString string];
NSMutableString 常用方法
通过调用string方法,创建一个空的NSMutableString
-(void)appendString:(NSString *)aString
拼接aString到最后面
-(void)appendFormat:(NSString *)format,...;
拼接一段格式化字符串到最后面
-(void)deleteCharactersInRange:(NSRange)range;
删除字符串的某些东西
-(void)insertString:(NSString*)aString atIndex:(NSInteger)loc;
在loc位置中插入aString
-(void)replaceCharactersInRange:(NSRange *)range withString:(NSString *)aString;
使用aString替换range范围内的字符串,一般不是以string开头的一般都不会产生一个新的字符串,这个方法不需要传范围参数
1.给一个可变的字符串赋值一个不可变的值
NSMutableString *ad=@"sdasd";
2.str.string属性 把原来字符串的内容给覆盖掉
3.开发绝大多数使用NSString
NSArray的介绍和基本使用
OC中的数组类
只能存放OC对象,并且是有序的。
不能存放非OC对象
他是不可变的,一旦初始化完毕后,它里面的内容就永远是固定的不能删除不能添加
NSArray的创建方式
+(instancetype)array;
+(instancetype)arrayWithObject:(id)anObject;
+(instancetype)arrayWithObjects:(id)anObject,...;
+(instancetype)arrayWithArray:(NSArray *)array;
+(instancetype)arrayWithOfFile:(NSString *)path;//读取一个ml文件
+(instancetype)arrayWithOfURL:(NSURL *)url;//读取一个xml文件
NSArray*arr3=[NSArray arryWithObjects:@"one",@"two",@1,nil];nil表示数组赋值结束
NSArray*arr3=[[NSArray alloc] initWithObjects:@"one",[NSNull NULL],@"two",@1,nil];调用对象方法创建数组
[NSNull NULL]输出显示为空而@""显示""
NSArray的常见用法
-(NSUInteger)count;获取集合元素个数
-(id)objectAtIndex:(NSUInteger)index;获取index位置的元素
-(BOOL)containsObject:(id)anObject;是否包含某一个元素
-(id)lastObject;返回最后一个元素
-(id)firstObject;返回第一个元素
-(NSUInteger)indexOfObject:(id)anObject;查找anObject元素在数组中的位置如果找不到返回-1NSNotFound
-(NSUInteger)indexOfObject:(id)anObject inRange:(NSRange)range;
在range范围内查找anObject元素在数组中的位置
str=arr[1];
数组使用注意
NSArray直接使用NSLog()作为字符串输出时是小括号括起来的形式
NSArray终不能存储nil,因为NSArray认为nil是数组的结束
NSArray的遍历
1.普通
2.快速枚举法
for(NSString *str in arr){}
3.使用block的方式,进行访问
[arr enumerateObjectsUsingBlock:^(id obj,NSUInteger idx,BOOL *stop){
if(idx==2){
*stop=YES;
}
else{
输出
}
}];
数组元素 下标是否停止
//YES 停止
//NO 不会停止
NSArray读写文件
NSArray数据写入到文件中
if[arr writeToFile:@"绝对地址的文件名/Users/apple/Desktop/arr.plist"atomically:YES]){NSLog(@"写入成功");}
NSArray与字符串
把数组元素链接成字符串
-(NSString *)componentsJoinedByString:(NSString *)separator;
这是NSArray的方法,用separator作拼接数组元素拼接成一个字符串
将字符串分割
-(NSArray *)componentsseparatedByString:(NSString *)separator;
NSMutableArray介绍
是可变的
NSMutableArray *arr=[NSMutableArray array];
NSMutableArray *arr2=[[NSMutableArray alloc] initWithCapacity:5];指定数组的长度
NSMutableArray *arr=[NSMutableArray arrayWithObjects:@"1",@"2",@nil];
NSMutableArray *arr3=[[NSMutableArray alloc] initWithObjects:@"1",@"2",@nil];
[arr1 addObject:@"fengjie"];添加元素 地址不变
[arr1 insertObject:@"zbz" atIndex:0];插入元素到什么位置
删除元素
[arr1 removeObject:@"zbz"];
根据位置删除
[arr1 removeObjectAtIndex:1];
删除全部
[arr1 removeAllObjects];
修改元素
[arr3 replaceObjectAtIndex:1 withObject:@"sdf"];
arr3[1]=@"five";
查找元素
[arr3 containsObject:@"for"];返回YES找到NO没找到
交换元素
[arr3 exchangeObjectAtIndex:0 withObjectAtIndex:4];可以交换数组元素
NSMutableArray错误用法
不能用@[@"",@"",@""];不可变数组去声明可变
NSDictionary
key value
是不可变的初始化之后内容就无法改变
NSDictionary的创建
+(instancetype)dictionary
+(instancetype)dictionaryWithObject:(id)object forKey:(id<NSCopying>) key;//objectForKey根据键取值
+(instancetype)dictionaryWithObjectsAndKeys:(id)firstObject,...;
一组键值对
NSDictionary *dict2=[NSDictionary dictionaryWithObject:@"张三" forKey:@"zs");
多组键值对
NSDictionary *dict2=[NSDictionary dictionaryWithObjectsAndKeys:@"张三",@"zs",@"value2",@"k2",nil);
输出 zs=zhangsan
字典的key和value都必须是对象
快速创建一个字典
@{,key值:value值,};
NSDictionary *dict4=@{@"zs":@"zhangsan ",@"ls":@"lisi"};
特点
1. key值不能重复
2.键值对存储的数据是无序的
3.键值对集合可以根据键快速取数据
-(NSUInteger)count;返回字典的键值对数目
-(id)objectForKey:(id)aKey;根据key取出value
字典的遍历
for循环遍历字典默认获取的是key值
for(NSString *key in dict4)
{
NSLog(@"%@%@",key,[dect4 objectForKey:key]);
}
key valuestop
dict4 enumrateKeysAndObjectsUsingBlock:^(id key,id obj,BOOL *stop)
{
NSLog(@"%@%@",key,obj);
}
NSDictionary的简写形式
@{};
NSDictionary获取元素
dict[@"name"];
NSDictionary文件操作
将字典写入文件中
-(BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile;
-(BOOL)writeToURL:(NSURL *)url atomically:(BOOL)atomically;
NSDictionary *readDict=[NSDictionary dictionaryWithContentsOfFile:@"路径"];
NSArray *lnArr = [NSArray arrayWithObjects:@"dalian ","shenyang",nil];
NSArray *hbArr=[NSArray arrayWithObjects:@"baoding",@"shijiazhuang",nil];
NSDictionary *citys=[NSDictionary dictionaryWithObjectsAndKeys:lnarr,@"ln",hbarr,@"hb",nil];
[citys writeToFile:@"路径/citys.plist" atomically:YES];
NSDictionary *cityDict=[NSDictionary dictionaryWithContentsOfFile:@"路径/citys.plist"];
[citysDict enumerateKeyAndObjectsUsingBlock:^(id key,id obj,BOOL *stop){
for(NSString *str in obj){
NSLog(@"%@",str);
}
};]
NSMutableDictionary介绍
常用方法
-(void)setObject:(id)anObject forKey:(id <NSCopying>)aKey;
添加一个键值对(会把aKey之前对应的值给替换掉)
-(void)removeObjectForKey:(id)aKey;
通过aKey删除对应的value
-(void)removeAllObjects;
删除所有的键值对
[dict1 setValue:@"lisi" forKey:@"ls"];
0 0
- 黑马程序员——>第四天<数组>
- 黑马程序员————第四天
- 黑马程序员——第四天(Java数组)
- 黑马程序员——面向对象<二> 笔记第四篇
- 黑马程序员——第四章 JavaAPI之常用类
- 黑马程序员——io之第四部分
- 黑马程序员——第四篇_正则表达式
- 黑马程序员————学习笔记(第四天)
- 黑马程序员Android学习笔记——金山卫士项目——第四天
- 黑马程序员——java基础学习笔记——第四天
- 黑马程序员———OC学习第四天(构造方法及分类)
- 黑马程序员——java第四天:基础语法(函数、数组)
- 黑马程序员——从零开始学java程序(第四天)
- 黑马程序员——Objective-C 第四天课程学习总结
- 黑马程序员第四天
- 黑马程序员——Java基础之循环结构——第四篇
- 黑马程序员————Socket编程小结(第四篇)
- 黑马程序员—java技术blog—第四篇:List和Set的总结
- 黑马程序员————第三天
- C++前缀自增/后缀自增及重载
- IOS把图片缓存到本地的几种方法
- struts1源码分析(一)整体概览和核心组件
- 相关问题,
- 黑马程序员————第四天
- PAT 1063. Set Similarity (25)
- Python学习笔记4_字符串
- Linux-2.6.20的cs8900驱动分析(二)
- struts1源码分析(二)初始化主线
- 黑马程序员————第五天
- html中给地址栏添加icon图标
- 零基础学FPGA(十二)一步一脚印之基于FIFO的串口发送机设计全流程及常见错误详解
- redis学习-5种数据类型和相关命令