oc - 数组及字符串拼接与分割

1.OC的数组成员是任意的对象指针    与C中的链表结构类似(以nil结尾)    一切的数组操作不能越界

OC的数组分为不可变数组 NSArray    可变数组 NSMutableArray 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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.不可变数组 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
-------查找
 
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.可变数组 

?
1
2
3
4
5
6
7
8
9
10
11
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.字符串分割与拼接 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//@""   空的字符串对象
-------分割
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:@ "" ])   //与空串进行比较(字符串是不能进行==比较的,要使用函数)       
         }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值