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)普通方式,通过下标访问
//简化创建一个数组
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”;