Objective-C中的数组和字符串

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

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

[cpp]  view plain  copy
  1. <pre name="code" class="objc">字符串数组初始化写法,相较于c++,比较奇怪.因为他是作为一个对象在实现对象实例初始化,整个格式都是这样.  
 
 

[cpp]  view plain  copy
  1. <pre name="code" class="objc">NSArray * array = [[NSArray alloc]initWithObjects:@"one",@"two",@"three", nil];  
 
 

[cpp]  view plain  copy
  1. <pre name="code" class="objc">NSLog(@"%@",[array objectAtIndex:0]);//通过下标获取数组成员(下标从0开始  

[cpp]  view plain  copy
  1. <pre name="code" class="objc">NSLog(@"%ld",[array count]);//获取数组有效成员个数 (不包括nil)  

[cpp]  view plain  copy
  1. <pre name="code" class="objc">for (i = 0; i < [array count]; i++) {//遍历数组(C方法)  
 
 

[cpp]  view plain  copy
  1. <pre name="code" class="objc">     NSLog(@"%@",[array objectAtIndex:i])  

[cpp]  view plain  copy
  1. <pre name="code" class="objc">}  

[cpp]  view plain  copy
  1. <pre name="code" class="objc">NSLog(@"%@",array);//(OC)查看数组内容(先给array发送description消息,然后给每个成员都发送一个description消息  

[cpp]  view plain  copy
  1. <pre name="code" class="objc">NSArray * array1 = [[NSArray alloc]initWithArray:array];//创建数组对象 相当于拷贝  

[cpp]  view plain  copy
  1. <pre name="code" class="objc">NSArray * arry2 = [NSArray arrayWithArray:array];//创建数组对象 相当于拷贝  

[cpp]  view plain  copy
  1. <pre name="code" class="objc">NSEnumerator * enumer = [array objectEnumerator];//正序枚举器  

[cpp]  view plain  copy
  1. <pre name="code" class="objc">//创建一个枚举器 把数组的每个元素的地址一次赋给枚举器,然后建立起某种关联 (枚举器只能用来读数组成员)  

[cpp]  view plain  copy
  1. <pre name="code" class="objc">//枚举时 会和数组创建某种关联(修改监视器/迭代器) 限制枚举的同时不能修改元素 只能读不能写  

[cpp]  view plain  copy
  1. <pre name="code" class="objc">id obj;  

[cpp]  view plain  copy
  1. <pre name="code" class="objc">//第一次循环把数组的第一个元素赋给obj  第二次循环把第二个数组元素赋给obj  

[cpp]  view plain  copy
  1. <pre name="code" class="objc">while (obj = [enumer nextObject]) {             //遍历数组  

[cpp]  view plain  copy
  1. <pre name="code" class="objc">     NSLog(@"%@",obj);  
 
 

<pre name="code" class="objc">}

[cpp]  view plain  copy
  1. <pre name="code" class="objc">//快速枚举  第一次循环把array的第一个元素赋给ob  第二次循环把array的第二个元素赋给ob 直到nil(只能读不能改)  

[cpp]  view plain  copy
  1. <pre name="code" class="objc">for(id ob in array){  

[cpp]  view plain  copy
  1. <pre name="code" class="objc">    NSLog(@"%@",ob);        

[cpp]  view plain  copy
  1. <pre name="code" class="objc">}  
 
 

<pre name="code" class="objc">//逆序输出数组(创建逆序枚举器 第一次循环把最后一个元素赋给obj )

 
 

<pre name="code" class="objc">NSEnumerator * enumer1 = [array reverseObjectEnumerator];

[cpp]  view plain  copy
  1. <pre name="code" class="objc">while (obj = [enumer1 nextObject]) {  

[cpp]  view plain  copy
  1. <pre name="code" class="objc">     NSLog(@"%@",obj);  

[cpp]  view plain  copy
  1. <pre name="code" class="objc">}  

[cpp]  view plain  copy
  1. <pre name="code" class="objc">if ([obj isKindOfClass:[Dog class]]) //获取类的类型 判是否是指定类的对象  

[cpp]  view plain  copy
  1. <pre name="code" class="objc">    if ([obj isMemberOfClass:[Dog class]]) {  

[cpp]  view plain  copy
  1. <pre name="code" class="objc">    }  

 
 

二.      不可变数组     

[objc]  view plain  copy
  1. -------查找  
[objc]  view plain  copy
  1. <span style="font-family: Arial, Helvetica, sans-serif;">NSArray * array = [[NSArray alloc]initWithObjects:@"one",@"two",@"three",@"one", nil nil];</span>  

NSUInteger index = [array indexOfObject:@"one123"];//返回第一个找到的数组成员对应的下标 找不到返回NSNotFound

[objc]  view plain  copy
  1. index = [array indexOfObject:@"one" inRange:NSMakeRange(13)];//在指定范围内查找  

[objc]  view plain  copy
  1. if (index != NSNotFound) {  

        NSLog(@"%ld",index);

    }

----抽取 组成新的数组

[objc]  view plain  copy
  1. NSArray * array1 = [array objectsAtIndexes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(13)]];  

《数字集合》

[objc]  view plain  copy
  1. NSIndexSet这是个数字集合类  

[objc]  view plain  copy
  1. [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(13)]产生一个数字集合  


三.     可变数组     

[objc]  view plain  copy
  1. NSMutableArray * array = [[NSMutableArray alloc]initWithObjects:@"one",@"two",@"three",@"four", nil nil];  

[array addObject:@"five"];//在数组尾部插入元素

[array insertObject:@"six" atIndex:5];//在数组指定下标位置插入元素(不能越界,最大值为length)

[array removeObject:@"six"];//删除指定元素(数组中出现的所有位置都将被删除)

[objc]  view plain  copy
  1. [array removeObject:@"two" inRange:NSMakeRange(03)];//从指定下标位置开始的指定长度内删除指定元素  

[objc]  view plain  copy
  1. [array removeLastObject];//删除最后一个元素  

[objc]  view plain  copy
  1. [array removeAllObjects];//删除所有元素<span style="font-family: Arial, Helvetica, sans-serif;">    </span>  

[array replaceObjectAtIndex:3 withObject:@"iOS"];//将指定下标位置元素替换为指定的元素

[array exchangeObjectAtIndex:0 withObjectAtIndex:3];//将指定下标的两个元素进行交换

四.      字符串分割与拼接          

[objc]  view plain  copy
  1. //@""   空的字符串对象  

-------分割

NSString * ptr = @"I am a man";

[objc]  view plain  copy
  1. NSArray * array = [ptr componentsSeparatedByString:@" "];//将字符串整体作为分割条件 返回值为NSArray不可变数组  

[objc]  view plain  copy
  1. NSMutableArray * array1 = [NSMutableArray arrayWithArray:array];//若修改,则将NSArray转化为NSMutableArray  

[objc]  view plain  copy
  1. NSArray * array2 = [ptr componentsSeparatedByCharactersInSet:[NSCharacterSet                                     
[objc]  view plain  copy
  1. 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:@""]) //与空串进行比较(字符串是不能进行==比较的,要使用函数)        

        }

五.   获取绝对路径中文件名(测试通过)

      lastPathComponent 

六.    另一种获取绝对路径中文件名的方法,测试未通过,但思路有保留价值

      NSArray *splitArr=[filepath componentsSeparatedByString:@"//"];//注意转义字符
      NSString *fileName = [splitArr lastObject];


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值