黑马程序员————第四天

来源:互联网 发布:不亦说乎的上一句 编辑:程序博客网 时间: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"];











































































0 0