OC字符串、数组、字典处理

2015-07-01
字符串----
NSString是一个类
NSString * str=@“ab”;//静态字符串 字符串不可以修改。但是可以重新指向另一个新的字符串。ab在内存中的值没有修改。
str = @“mn”;//并非修改了字符串,而是str重新指向了新串。指向类mn的新地址。

NSLog(@"%d",[str characterAtIndex:0]);//阿斯克吗的计算方法。
NSString * str1;
str1 = [[NSString alloc]initWithFormat:@"%d%lf",123,123.456];
NSString * str2;
str2 = [[NSString alloc]initWithString:str];
NSString * str3;
str3 = [NSString stringWithFormat:@"%d",123];
NSString * str4;
str4 = [NSString stringWithString:str2];
char * stry = "abc哈哈";
NSString * str5;
str5 = [NSString stringWithUTF8String:stry];//C语言 C语言可以转换为OC OC不能转换为C
// compare: 的使用
NSString * str9 = @"ABC哈哈";
str9 = [str9 lowercaseString];//转小写
NSLog(@"%@",str9);
str9 = [str9 uppercaseString];//转大写
NSLog(@"%@",str9);
NSLog(@"%lu,%lu",[str9 length],[str9 lengthOfBytesUsingEncoding:NSUTF8StringEncoding]);
//查找子串
double d = 123.456;
NSString * str10 = [NSString stringWithFormat:@"%lf",d];
NSRange range = [str10 rangeOfString:@"."];
if (range.location == NSNotFound) {
NSLog(@"NO");
}else{
NSLog(@"YES");
}
NSLog(@"range.location=%ld,range.length=%ld",range.location,range.length);
//数据类型转换
//字符串转换为整型
NSString * str11 = @"123.45";
NSLog(@"%lf",[str11 doubleValue]);
//判断字符串是以什么字符开头和结尾
[str11 hasPrefix:@"123"];
[str11 hasSuffix:@".45"];
NSLog(@"%d,%d",[str11 hasPrefix:@"123"],[str11 hasSuffix:@".45"]);
//提取子字符串
NSString * str12 = @"abcdefgh";
NSLog(@"%@",[str12 substringFromIndex:5]);
NSLog(@"%@",[str12 substringToIndex:2]);
NSLog(@"%@",[str12 substringWithRange:NSMakeRange(1, 3)]);
//是否相等
if ([str12 isEqualToString:str11]) {
NSLog(@"YES");
}else{
NSLog(@"NO");
}
//字符串连接
NSLog(@"%@",[NSString stringWithFormat:@"%@%@",str11,str12]);
str12 = [str12 stringByAppendingString:str11];
NSLog(@"%@",str12);
动态字符串----
//动态字符串的定义 ---NSMutableString继承了NSString的类,NSString的方法,在NSMutableString中基本都能实现,NSMutableString是可变的字符串,比NSString多增加了append、replace、delete等方法。
NSMutableString * mstr=[NSMutableString stringWithCapacity:100];
//设置值
[mstr setString:@"abcdef"];
//拼接一个格式化的值
[mstr appendFormat:@"%d",123];
//替换字符串
NSRange range={0,2};
[mstr replaceCharactersInRange:range withString:@"ba"];
//插入字符串
[mstr insertString:@"AAA" atIndex:2];
//删除字符串
range=[mstr rangeOfString:@"def"];
[mstr deleteCharactersInRange:range];
NSLog(@"%@",mstr);
//setString 重新设置动态字符串的值。
[str setString:@"abc"];

2015-07-02
数组----
// int a[10] = {1,2,3,4,5};
NSArray * arr = [[NSArray alloc]initWithObjects:@"zs",@"ls",@"ww", nil];//静态数组
Student * s1 = [[Student alloc]init];
Student * s2 = [[Student alloc]init];
NSArray * stu=[[NSArray alloc]initWithObjects:s1,s2, nil];
NSArray * arr2 = [NSArray arrayWithObjects:@"a",@"b", nil];
NSArray * arr3 = @[@"a1",@"b1",@"c1"];
NSLog(@"%@",arr);
NSLog(@"%@",arr2);
NSLog(@"%@",stu);//输出的s1和s2的地址
NSLog(@"%@",arr3);
NSLog(@"%lu",[arr2 count]);//数组个数
NSLog(@"%@",[arr objectAtIndex:1]);//取出元素
//NSMutableArray 动态数组
// NSMutableArray * marr1=@[@"aa",@"bb"];
NSMutableArray *marr2=[[NSMutableArray alloc]initWithCapacity:20];//初始化使用类方法分配内存
[marr2 addObject:@"aaa"];//添加一个对象
[marr2 addObject:@"bbb"];
[marr2 addObject:@"bbb"];
[marr2 addObject:@"ccc"];
[marr2 arrayByAddingObjectsFromArray:arr];//追加数组 又返回值的,以后就用于判断吧
// marr2=[NSMutableArray arrayWithObjects:@"", nil]
[marr2 arrayByAddingObject:@"qq"];//追加对象 有返回值的 以后就用于判断吧
[marr2 removeObject:@"bbb"];//移除,
[marr2 removeObject:@"bbb" inRange:NSMakeRange(0, 2)];//移除指定范围对象
[marr2 removeObjectAtIndex:0];//指定移除
[marr2 replaceObjectAtIndex:0 withObject:@"AAA"];//指定替换
NSLog(@"marr2=%@",marr2);
NSMutableArray * arr3 = [NSMutableArray arrayWithCapacity:10];
NSArray * arr4=@[@"111",@"222",@"333"];
[arr3 addObjectsFromArray:arr4];//可以把静态数组的值放在动态数组里面
NSArray * arr5;
arr5 = [arr3 arrayByAddingObjectsFromArray:arr4];//把两个数组和并成一个新的数组。
NSLog(@"arr3 = %@",arr3);
NSLog(@"arr5 = %@",arr5);
NSMutableArray * arr6 = [NSMutableArray arrayWithCapacity:100];//内存
[arr6 addObjectsFromArray:arr3];//把动态数组添加到动态数组
NSLog(@"arr6 = %@",arr6);
NSString * str =@"abc";
NSLog(@"%d",[str characterAtIndex:0]);
[arr6 writeToFile:@"qq.plist" atomically:YES];//将数组写入文件 plist
NSArray * arr7 = [NSArray arrayWithContentsOfFile:@"qq.plist"];//将文件中的数据读取到数组。
NSLog(@"arr7=%@",arr7);
NSArray * arr8 = [arr7 objectsAtIndexes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, 2)]];//获取arr7中范围数组。
NSLog(@"arr8 = %@",arr8);
NSString * strs=@"acbcdefgh";
NSError * error;
[strs writeToFile:@"sp.txt" atomically:YES encoding:NSUTF8StringEncoding error:&error];//写入文件
strs = [NSString stringWithContentsOfFile:@"sp.txt" encoding:NSUTF8StringEncoding error:&error];//文件读取
NSLog(@"str = %@",strs);

2015-07-03
NSSet-----
NSSet无序数据集合,数据如果重复则覆盖掉,不能重复,NSarray可以重复。
NSset可以来源一个数据集,数据集传到NSSet后,数组中的数据经过无序和不重复的处理后给set。
NSset显示数据,是通过NSSet 给数组,[set allobject]然后通过数组显示内容。
这里NSSet可以起到一个不重复的数组的数据处理。

//静态集合
NSSet * set = [[NSSet alloc]init];
NSSet * set1 = [NSSet setWithObjects:@"A",@"B", nil];
NSArray * array = [NSArray arrayWithObjects:@"A1",@"A2",@"A2",@"A5",@"A3", nil];
NSSet * set2 = [[NSSet alloc]initWithArray:array];//数组给集合 给集合后进行了无序和不重复的处理
NSLog(@"set1 = %@",set1);
NSLog(@"array = %@",array);
NSLog(@"set2 = %@",set2);
NSArray * arrset = [set2 allObjects];//将NSSet值给数组然后通过数组查找。
NSLog(@"arrset = %@",arrset);
arrset = [arrset sortedArrayUsingSelector:@selector(compare:)];//数组排序
NSLog(@"arrset = %@",arrset);
//动态集合
NSMutableSet * mset1 = [NSMutableSet setWithCapacity:20];//动态集合分内存。为动态集合分配内存。
[mset1 addObject:@"1"];//追加对象
[mset1 addObjectsFromArray:array];//追加数组
[mset1 removeObject:@"A1"];//移除具体对象
[mset1 removeAllObjects];//移除所有对象
[mset1 setSet:set2];//集合替换
[mset1 unionSet:set2];//集合合并
[mset1 minusSet:set2];//差集,显示的内容为mset1去除了和set2相同的值。
[mset1 intersectSet:set2];//显示相同内容值
NSLog(@"mset = %@",mset1);
NSOrderedSet * oSet = [NSOrderedSet orderedSetWithArray:array];//有序的set集合
NSArray * a1 = [NSArray arrayWithObjects:@"1", nil];
NSArray * a2 = [NSArray arrayWithObjects:@"2", nil];
NSArray * a3 = [NSArray arrayWithObjects:@"3", nil];
NSArray * array1 = [NSArray arrayWithObjects:@"1",@"2",@"3", nil];
NSArray * array2 = [NSArray arrayWithObjects:a1,a2,a3, nil];
NSSet * set1 = [NSSet setWithArray:array1];
NSSet * set2 = [NSSet setWithArray:array2];
NSLog(@"count = %d",(int)[set1 count]);//集合个数
NSLog(@"setArray = %@",[set1 allObjects]);//将集合对象返回到数组中
for (NSString * str in set1) {//快速枚举器可以遍历Set集合
NSLog(@"str = %@",str);
}
NSLog(@"判断对象是否在集合存在 %d",[set1 containsObject:@"3"]);//判断对象3,是否在集合中存在
NSLog(@"集合是否相等 %d",[set1 isEqualToSet:set2]);//判断两个集合是否相等
NSLog(@"一个集合中是否包含另一个集合 %d",[set1 isSubsetOfSet:set2]);//set1中是否包含set2集合
NSLog(@"判断两个集合中是否含有共同元素 %d",[set1 intersectsSet:set2]);//判断set1和set2是否含有相同的元素
NSMutableSet * mset1 = [NSMutableSet setWithArray:array1];//动态集合
[mset1 addObject:@"4"];//追加对象
NSLog(@"追加后的新对象%@",mset1);
[mset1 removeObject:@"4"];//删除对象
NSLog(@"删除后的新对象%@",mset1);
[mset1 unionSet:set1];//union all 合并另一个集合
NSLog(@"合并后的新对象%@",mset1);
[mset1 setSet:set2];//重新设置值
NSLog(@"重设后的新对象%@",mset1);
-----------字典-----------------
NSDictionary * dict = @{@"1":@"111",@"2":@"222",@"3":@"444"};
//静态字典
NSDictionary * dict1 = [NSDictionary dictionaryWithObjectsAndKeys:@"张三",@"1",@"李四",@"2", nil];//类方法进行初始化
NSDictionary * dict2 = [[NSDictionary alloc]initWithObjectsAndKeys:@"王五",@"1",@"赵六",@"2", nil];
NSString * str = [dict1 objectForKey:@"1"];//取出一个对象按照key取出。
NSArray * array1 = [dict2 allKeys];//所有key取出。
for(NSString * s in dict2) {
NSLog(@"key = %@,value = %@",s,[dict2 objectForKey:s]);
}
//动态字典
NSMutableDictionary * mdict = [[NSMutableDictionary alloc]initWithCapacity:20];
[mdict setObject:@"张三" forKey:@"2"];//增加 或者理解为替换
[mdict removeObjectForKey:@"1"];//删除对象 removeObjectsForKeys:(Nsarray *) otherDic 删除数组中所有的对象
NSArray * keys = [mdict allKeys];
for (NSString * str in keys) {
NSLog(@"%@,%@",str,[mdict objectForKey:str]);
}
NSArray * ar1 = [NSArray arrayWithObjects:@"1",@"2", nil];
NSArray * val1 = [NSArray arrayWithObjects:@"A1",@"A2", nil];
NSArray * ar2 = [NSArray arrayWithObjects:@"3",@"4", nil];
NSArray * val2 = [NSArray arrayWithObjects:@"B1",@"B2", nil];
NSDictionary * dicts = [NSDictionary dictionaryWithObjectsAndKeys:val1,ar1,val2,ar2, nil];
for(NSArray * array in dicts) {
NSLog(@"%@%@",[array objectAtIndex:0],[[dicts objectForKey:array] objectAtIndex:0]);

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值