黑马程序员--学习OC Foundation1
2015-08-08 22:41
477 查看
OC-Foundation1
1、字符串比较函数compare
compare 方法返回的结果有三种:NSOrderedAscending,NSOrderedSame,NSOrderedDescending,
str > str2
str < str2
str == str2
NSOrderedDescending NSOrderedAscending NSOrderedSame 0
compare这个函数不能增加条件,比较字符串大小,可以指定条件。
常见的有3个
NSCaseInsensitiveSearch:不区分大小写字符。
NSLiteralSearch:进行完全比较,区分大小写。(默认)
NSNumericSearch:比较字符串的字符个数,而不是字符值。
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { NSString *str1=@"abc"; NSString *str2=@"Abcd"; NSComparisonResult result=[str1 compare: str2]; NSComparisonResult result1=[str1 compare:str2 options:NSCaseInsensitiveSearch]; NSComparisonResult result2=[str1 compare:str2 options:NSCaseInsensitiveSearch |NSNumericSearch]; NSLog(@"%ld",result); NSLog(@"%ld",result1); NSLog(@"%ld",result2); } return 0; }
判断两个字符串内容是否相等,使用的是isEqualToString:,它是区分大小写的。
[str1 isEqualToString:str2];
它的返回值值布尔类型的。
如何检测这个字符串是否是一个网址
[ str hasPerfix:@“要检测的内容”]
检测字符串的后缀
[str hasSuffix:@“待检测的后缀”]
字符串查找:
NSString *str3=@"asdasfsdfsdfiossdad"; NSString *str4=@"ios"; //查找字符串4在字符串3中首次出现的位置和长度 //range是结构体变量,NSRange结构体别名 NSRange range= [str3 rangeOfString:str4]; NSLog(@"%ld,%ld",range.location,range.length);
如果查找不到,返回信息
location NSNotFound
lenth 0
NSRange的使用
NSRange是Foundation框架中比较常用的结构体, 它的定义如下:typedef struct _NSRange { NSUInteger location; NSUInteger length; } NSRange;
NSRange用来表示事物的一个范围,通常是字符串里的字符范围或者数组里的元素范围
NSRange有2个成员:
NSUInteger location : 表示该范围的起始位置
NSUInteger length : 表示该范围内的长度
OC中NSRange创建的方式
NSRange range=NSMakeRange(5, 8);
查看结构体变量的值
NSLog(@”%@”,NSStringFromRange(range));
字符串的截取
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { //1)从xx位置开始到结束(包含xx这个位置) NSString *str1=@"wushidaniu"; NSString *str2=[str1 substringFromIndex:3]; NSLog(@"str2=%@",str2); //2)从开始位置,到xx位置结束(不包含xx这个位置) NSString *str4=[str1 substringToIndex:3]; NSLog(@"st42=%@",str4); //3)截取一个范围 NSRange r1={3,4}; NSString *str6=[str1 substringWithRange:r1]; NSLog(@"str6=%@",str6); } return 0; }
字符串的替换
NSString *str=@"<asd>传智</asd>"; //stringByReplacingOccurrencesOfString:@"源字符串中的内容" withString:@"要替换的内容" NSString *newStr=[str stringByReplacingOccurrencesOfString:@"传智" withString:@"黑马"]; NSLog(@"%@",newStr);
字符串转换成数据类型
- (double)doubleValue;
- (float)floatValue;
- (int)intValue;
去除所有的空格 [str stringByReplacingOccurrencesOfString:@” ” withString:@”“]
去除首尾的空格 [str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
NSArray
NSArray是OC中的数组类, 只能存放任意OC对象, 并且是有顺序的不能存储非OC对象, 比如int\float\double\char\enum\struct等
它是不可变的, 一旦初始化完毕后, 它里面的内容就永远是固定的, 不能删除里面的元素, 也不 能再往里面添加元素
NSarray创建方式
//创建一个空数组 NSArray *arr1=[NSArray array]; //创建数组,只有一个元素 NSArray *arr2=[NSArray arrayWithObject:@"w"]; //创建数组,有多个元素 NSArray *arr3=[NSArray arrayWithObjects:@"w",@"y",@"z", nil]; //调用对象方法,创建数组 NSArray *arr4=[[NSArray alloc]initWithObjects:@"a",@"b", nil]; //用一个数组创建另一个数组 NSArray *arr5=[NSArray arrayWithArray:arr4]; //简化创建一个数组 NSArray *arr6=@[@"no",@"yes",@"double"]; //用简化的方式访问数组 NSString *str=arr6[2]; // NSarray遍历 //1)普通方式,通过下标访问 //简化创建一个数组 4000 NSArray *arr6=@[@"no",@"yes",@"double"]; for (int i=0; i<arr6.count; i++) { NSLog(@"%@",arr6[i]); } //2)快速枚举法 for-in for (NSString * str in arr6) { NSLog(@"%@",str); } //3)使用block的方式 [arr6 enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { NSLog(@"%@,%lu",obj,idx); }];
NSArray数据写入到文件中
//创建一个数组 NSArray *arr = [NSArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5", nil]; //写入数据到文件中 if([arr writeToFile:@"/Users/xiaoguai/Desktop/arr.plist" atomically:YES]) { NSLog(@"写入成功!"); }
从文件读取数据到NSArray中
//创建一个数组,读取plist NSArray *arr = [NSArray arrayWithContentsOfFile:@"/Users/xiaoguai/Desktop/arr.plist"]; NSLog(@"%@",arr);
NSMutableArray
NSMurableArray是NSArray的子类,是可变的,可对元素进行增删查改操作#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { //1 创建一个空数组 NSMutableArray *arr=[NSMutableArray array]; //2 添加元素 [arr addObject:@"numone"]; [arr addObject:@"asd"]; [arr addObject:@"wsx"]; //3 插入一个元素到指定的位置 [arr insertObject:@"numtwo" atIndex:1]; //4 根据对象内容删除元素 [arr removeObject:@"numone"]; //4.1根据下标删除元素 [arr removeObjectAtIndex:0]; NSLog(@"%@",arr); //4.2删除全部元素 [arr removeAllObjects]; //5 修改元素 [arr replaceObjectAtIndex:1 withObject:@"a"]; //5.1 修改元素 arr[0]=@"three"; NSLog(@"%@",arr); //6 查找元素 bool isSearch=[arr containsObject:@"a"]; //7 交换元素 [arr exchangeObjectAtIndex:0 withObjectAtIndex:1]; } return 0; }
NSDictionary
NSDictionary的作用类似: 通过一个key(键), 就能找到对应的value(值)NSDictionary是不可变的, 一旦初始化完毕, 里面的内容就无法修改
NSDictionary的创建;
//创建一个空字典 NSDictionary *dic=[NSDictionary dictionary]; //创建一组键值的字典 NSDictionary *dic1=[NSDictionary dictionaryWithObject:@"周四" forKey:@"zs"]; //创建多组的字典 NSDictionary *dic2=[NSDictionary dictionaryWithObjectsAndKeys:@"发条",@"cg",@"船长",@"coco", nil]; //快速创建字典 NSDictionary *dic4=@{@"cm":@"冰女",@"jugg":@"剑圣",@"es":@"牛头"}; NSLog(@"%@",dic4);
NSDictionary的使用:
//获取字典长度 NSLog(@"dic2=%lu",dic4.count); //根据key值取出value值 NSString *str=[dic4 objectForKey:@"cm"]; NSLog(@"str=%@",str);
NSDictionary的遍历
//字典的遍历 for (NSString *key in dic4) { NSLog(@"key=%@,value=%@",key,[dic4 objectForKey:key]); } //方法二 [dic4 enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { NSLog(@"%@=%@",key,obj) ; }];
NSDictionary文件操作
写入一个字典数据
//快速创建字典 NSDictionary *dict3 = @{@"zs" : @"zhangsan", @"ls" : @"lisi", @"ww" : @"Wangwu"}; ; //将字典写入到文件中 [dict3 writeToFile:@"/Users/liwei/Desktop/dict.plist" atomically:YES];
从文件中读取字典到内存中
(id)dictionaryWithContentsOfFile:(NSString *)path;
保存结果是xml文件格式,但苹果官方推荐为plist后缀。
把字典放到NSArray中,调用array的writeToFile
(id)dictionaryWithContentsOfURL:(NSURL *)url;
NSDictionary和NSArray对比
NSArray和NSDictionary的区别1> NSArray是有序的,NSDictionary是无序的
2> NSArray是通过下标访问元素,NSDictionary是通过key访问元素
NSArray的用法
1> 创建 @[@”Jack”, @”Rose”] (返回是不可变数组)
2> 访问 id d = array[1];
3> 赋值 array[1] = @”jack”;
NSDictionary的用法
1> 创建 @{ @”name” : @”Jack”, @”phone” : @”10086” } (返回是不可变字典)
2> 访问 id d = dict[@”name”];
3> 赋值 dict[@”name”] = @”jack”;
相关文章推荐
- 黑马程序员 oc随记 类方法与对象方法
- 剑指Offer面试题31(java版):连续子数组的最大和
- 黑马程序员---OC Category
- 黑马程序员--java基础--基础语法
- 黑马程序员——Java基础---IO(二)---IO字节流、流操作规律
- 黑马程序员--IO流之字节流
- StackOverflow程序员推荐:每个程序员都应读的30本书
- 《程序员面试宝典3》大量错误(50+)纠正表
- Java后台工程师面试杂记——不跳不涨工资星人跳槽经历
- 剑指offer_面试题12_打印1到最大的n位数(大数问题)
- 【剑指Offer面试题】 九度OJ1373:整数中1出现的次数(从1到n整数中1出现的次数)
- 剑指Offer面试题30(java版):最小的k个数
- 黑马程序员——Java中的一个关于参数传递的小问题
- 20个高级Java面试题汇总
- 黑马程序员——Java基础---IO(一)---IO流概述、字符流
- java---面试题---.java"源文件中可以包括多个类(不是内部类)
- 剑指Offer面试题29(java版):数组中出现次数超过一半的数字
- 如何在面试中发现优秀程序员
- 黑马程序员--IO流总述
- GNU Binary Utilities的笔记