Obj-C数组以及字符串拼接与分割

来源:互联网 发布:颜真卿书法 知乎 编辑:程序博客网 时间:2024/04/30 04:41

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

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

  1. NSArray * array = [[NSArray alloc]initWithObjects:@ "one" ,@ "two" ,@ "three" , nil]; 
  2.     NSLog(@ "%@" ,[array objectAtIndex:0]); //通过下标获取数组成员(下标从0开始)  
  3.     NSLog(@ "%ld" ,[array count]); //获取数组有效成员个数 (不包括nil)  
  4.      for  (i = 0; i < [array count]; i++) { //遍历数组(C方法)  
  5.          NSLog(@ "%@" ,[array objectAtIndex:i]); 
  6.     } 
  7.     NSLog(@ "%@" ,array);  
  8.     NSArray * array1 = [[NSArray alloc]initWithArray:array]; //创建数组对象 相当于拷贝  
  9.     NSArray * arry2 = [NSArray arrayWithArray:array]; //创建数组对象 相当于拷贝  
  10.     NSEnumerator * enumer = [array objectEnumerator]; //正序枚举器  
  11.       
  12.       
  13.     id obj; 
  14.       
  15.      while  (obj = [enumer nextObject]) {              //遍历数组  
  16.          NSLog(@ "%@" ,obj); 
  17.     } 
  18.       
  19.      for (id ob in array){ 
  20.         NSLog(@ "%@" ,ob);      
  21.     } 
  22.      //逆序输出数组(创建逆序枚举器  第一次循环把最后一个元素赋给obj )  
  23.     NSEnumerator * enumer1 = [array reverseObjectEnumerator]; 
  24.      while  (obj = [enumer1 nextObject]) { 
  25.          NSLog(@ "%@" ,obj); 
  26.     } 
  27.      if  ([obj isKindOfClass:[Dog  class ]])  //获取类的类型 判是否是指定类的对象  
  28.          if  ([obj isMemberOfClass:[Dog  class ]]) { 
  29.         } 

2.不可变数组

  1. -------查找 
  2.       
  3.     NSArray * array = [[NSArray alloc]initWithObjects:@ "one" ,@ "two" ,@ "three" ,@ "one" , nil];    
  4.     NSUInteger index = [array indexOfObject:@ "one123" ]; //返回第一个找到的数组成员对应的下标 找不到返回NSNotFound     
  5.     index = [array indexOfObject:@ "one"  inRange:NSMakeRange(1, 3)]; //在指定范围内查找  
  6.          if  (index != NSNotFound) { 
  7.              NSLog(@ "%ld" ,index); 
  8.         } 
  9.     ----抽取 组成新的数组 
  10.     NSArray * array1 = [array objectsAtIndexes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(1, 3)]]; 
  11.     《数字集合》 
  12.     NSIndexSet这是个数字集合类 
  13.     [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(1, 3)]产生一个数字集合 

3.可变数

  1. NSMutableArray * array = [[NSMutableArray alloc]initWithObjects:@ "one" ,@ "two" ,@ "three" ,@ "four" , nil]; 
  2.     [array addObject:@ "five" ]; //在数组尾部插入元素  
  3.     [array insertObject:@ "six"  atIndex:5]; //在数组指定下标位置插入元素(不能越界,最大值为length)     
  4.     [array removeObject:@ "six" ]; //删除指定元素(数组中出现的所有位置都将被删除)  
  5.     [array removeObject:@ "two"  inRange:NSMakeRange(0, 3)]; //从指定下标位置开始的指定长度内删除指定元素  
  6.     [array removeLastObject]; //删除最后一个元素  
  7.     [array removeAllObjects]; //删除所有元素          
  8.     [array replaceObjectAtIndex:3 withObject:@ "ios" ]; //将指定下标位置元素替换为指定的元素  
  9.     [array exchangeObjectAtIndex:0 withObjectAtIndex:3]; //将指定下标的两个元素进行交换  

4.字符串分割与拼接

  1. //@""   空的字符串对象  
  2.     -------分割 
  3.     NSString * ptr = @ "I am a man" 
  4.     NSArray * array = [ptr componentsSeparatedByString:@ " " ]; //将字符串整体作为分割条件 返回值为NSArray不可变数组  
  5.     NSMutableArray * array1 = [NSMutableArray arrayWithArray:array]; //若修改,则将NSArray转化为NSMutableArray  
  6.     NSArray * array2 = [ptr componentsSeparatedByCharactersInSet:[NSCharacterSet                                            characterSetWithCharactersInString:@ ", " ]]; //以字符串中的字符作为分割条件进行分割  
  7.     《字符集合》 
  8.     NSCharacterSet 这是个字符集合类 
  9.     [NSCharacterSet characterSetWithCharactersInString:@ ", " ] //把字符串转化为字符集合  
  10.     -------拼接 
  11.     NSString * str = [array componentsJoinedByString:@ " " ];   
  12.     若分割条件出现在开头或者结尾,则会出现空串@ "" ,如果不需要,则需要转化成NSMutableString对空串进行处理 
  13.     func1:  [array1 removeObject:@ "" ];      //找到空串直接删除  
  14.     func2:   for (id obj in array1){ 
  15.                  if ([obj length] == 0)            //空串的长度为0  
  16.                  if ([obj isEqualToString:@ "" ])    //与空串进行比较(字符串是不能进行==比较的,要使用函数)         
  17.             } 
0 0
原创粉丝点击