OC 数组以及字符串拼接与分割
2015-09-24 05:23
417 查看
1.OC的数组成员是任意的对象指针 与C中的链表结构类似(以nil结尾) 一切的数组操作不能越界
OC的数组分为不可变数组 NSArray 可变数组 NSMutableArray
?
2.不可变数组
?
3.可变数组
?
4.字符串分割与拼接
?
OC的数组分为不可变数组 NSArray 可变数组 NSMutableArray
NSArray * array = [[NSArray alloc]initWithObjects:@"one",@"two",@"three", nil]; NSLog(@"%@",[array objectAtIndex:0]);//通过下标获取数组成员(下标从0开始) NSLog(@"%ld",[array count]);//获取数组有效成员个数 (不包括nil) for(i = 0; i < [array count]; i++) {//遍历数组(C方法) NSLog(@"%@",[array objectAtIndex:i]); } NSLog(@"%@",array);//(OC)查看数组内容(先给array发送description消息,然后给每个成员都发送一个description消息) NSArray * array1 = [[NSArray alloc]initWithArray:array];//创建数组对象 相当于拷贝 NSArray * arry2 = [NSArray arrayWithArray:array];//创建数组对象 相当于拷贝 NSEnumerator * enumer = [array objectEnumerator];//正序枚举器 //创建一个枚举器 把数组的每个元素的地址一次赋给枚举器,然后建立起某种关联 (枚举器只能用来读数组成员) //枚举时 会和数组创建某种关联(修改监视器/迭代器) 限制枚举的同时不能修改元素 只能读不能写 id obj; //第一次循环把数组的第一个元素赋给obj 第二次循环把第二个数组元素赋给obj while(obj = [enumer nextObject]) { //遍历数组 NSLog(@"%@",obj); } //快速枚举 第一次循环把array的第一个元素赋给ob 第二次循环把array的第二个元素赋给ob 直到nil(只能读不能改) for(id ob in array){ NSLog(@"%@",ob); } //逆序输出数组(创建逆序枚举器 第一次循环把最后一个元素赋给obj ) NSEnumerator * enumer1 = [array reverseObjectEnumerator]; while(obj = [enumer1 nextObject]) { NSLog(@"%@",obj); } if([obj isKindOfClass:[Dog class]])//获取类的类型 判是否是指定类的对象 if([obj isMemberOfClass:[Dog class]]) { }
?
2.不可变数组
?
-------查找 NSArray * array = [[NSArray alloc]initWithObjects:@"one",@"two",@"three",@"one", nil]; NSUInteger index = [array indexOfObject:@"one123"];//返回第一个找到的数组成员对应的下标 找不到返回NSNotFound index = [array indexOfObject:@"one"inRange:NSMakeRange(1, 3)];//在指定范围内查找 if(index != NSNotFound) { NSLog(@"%ld",index); } ----抽取 组成新的数组 NSArray * array1 = [array objectsAtIndexes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(1, 3)]]; 《数字集合》 NSIndexSet这是个数字集合类 [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(1, 3)]产生一个数字集合
3.可变数组
NSMutableArray * array = [[NSMutableArray alloc]initWithObjects:@"one",@"two",@"three",@"four", nil]; [array addObject:@"five"];//在数组尾部插入元素 [array insertObject:@"six"atIndex:5];//在数组指定下标位置插入元素(不能越界,最大值为length) [array removeObject:@"six"];//删除指定元素(数组中出现的所有位置都将被删除) [array removeObject:@"two"inRange:NSMakeRange(0, 3)];//从指定下标位置开始的指定长度内删除指定元素 [array removeLastObject];//删除最后一个元素 [array removeAllObjects];//删除所有元素 [array replaceObjectAtIndex:3 withObject:@"ios"];//将指定下标位置元素替换为指定的元素 [array exchangeObjectAtIndex:0 withObjectAtIndex:3];//将指定下标的两个元素进行交换
?
4.字符串分割与拼接
//@"" 空的字符串对象 -------分割 NSString * ptr = @"I am a man"; NSArray * array = [ptr componentsSeparatedByString:@" "];//将字符串整体作为分割条件 返回值为NSArray不可变数组 NSMutableArray * array1 = [NSMutableArray arrayWithArray:array];//若修改,则将NSArray转化为NSMutableArray NSArray * array2 = [ptr componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@", "]];//以字符串中的字符作为分割条件进行分割 《字符集合》 NSCharacterSet 这是个字符集合类 [NSCharacterSet characterSetWithCharactersInString:@", "]//把字符串转化为字符集合 -------拼接 NSString * str = [array componentsJoinedByString:@" "]; 若分割条件出现在开头或者结尾,则会出现空串@"",如果不需要,则需要转化成NSMutableString对空串进行处理 func1: [array1 removeObject:@""]; //找到空串直接删除 func2: for(id obj in array1){ if([obj length] == 0) //空串的长度为0 if([obj isEqualToString:@""]) //与空串进行比较(字符串是不能进行==比较的,要使用函数) }
?
相关文章推荐
- iOS presentViewController背景色透明
- Minimum Path Sum
- LintCode "Route Between Two Nodes in Graph"
- 黑马程序员——集合Collection:体系详述
- when not using the appcompat library, you should be using the android:showAsAction attribute.
- Windows下查找java\ant安装路径
- Binary Tree Level Order Traversal II 解答
- Bit Manipulation
- Binary Tree Level Order Traversal 解答
- BFS visit tree
- [LeetCode 228] Summary Ranges
- 条款40:明智而审慎地使用多重继承
- LeetCode Jump Game II
- LeetCode OJ 03 Longest Substring Without Repeating Characters
- [LeetCode 223] Rectangle Area
- 涵盖各种编程语言的深度学习库整理大全
- HDU 4123 Bob’s Race(树形DP+RMQ)
- java 内存模型
- C++英文单词统计小程序
- POJ - 3468 A Simple Problem with Integers(线段树成段更新,查询区间和)