iOS数组方法汇总

1、NSArray的所有方法
        //OC的数组
        //1、数组里面只能存对象
        //2、同一个数组里面存的数据类型可以不同
        //3、数组里面存的是对象指针的集合
        
        //NSArray
        //创建 alloc
        
        //initWithObjects
        NSArray *array = [[NSArray alloc] initWithObjects:@"123",@"456",@"789", nil];
        //nil表示结束
        //数组里面存对象时,要判断是否为nil,否则容易出现奇怪的问题
        NSLog(@"%@",array);
        
        //initWithArray 用一个数组来初始化另一个数组
        NSArray *array1 = [[NSArray alloc] initWithArray:array];
        NSLog(@"array is %@",array1);
        
        //类方法
        NSArray *array2 = [NSArray arrayWithObjects:@"123",@"456",@"789", nil];
        NSArray *array3 = [NSArray arrayWithArray:array2];
        
        //获取数组的元素
        NSString *str1 = [array2 objectAtIndex:1];
        NSLog(@"%@",str1);
        
        //练习,从数组@[@"我是人",@"你也是",@"他不是"];中取出index等于2的对象,并打印
        
        //练习 从数组@[@"我是人",@"你也是",@"他不是"];中取出index等于3的对象,并打印
        
        //要注意越界的问题
        
        //练习 从数组@[@"我是人",@"你也是",@"他不是"];中取出所有对象,并依次打印
        
        NSArray *array8 = [NSArray arrayWithObjects:@"我是人",@"你也是",@"他不是", nil];
        NSString *str5 = [array8 objectAtIndex:0];
        NSString *str6 = [array8 objectAtIndex:1];
        NSString *str7 = [array8 objectAtIndex:2];
        NSLog(@"%@\n %@\n %@",str5,str6,str7);
        
        for(int i = 0;i<3;i++)
        {
            NSLog(@"%@",[array8 objectAtIndex:i]);
        }
        
        //数组的长度
        int arrCount = [array8 count];
        NSLog(@"%d",arrCount);
        
        for(int i =0;i<[array8 count];i++)
        {
            NSLog(@"%@",[array8 objectAtIndex:i]);
        }
        
        //练习,从@[@"1",@"2",@"3"]中取出所有对象,并打印。要求分别使用遍历和不遍历的方法写,遍历时候不许用.count和[下标]
        
        //遍历@[@"i",@"k",@"f"];
        //使用i<count
        NSArray *arr1=[[NSArray alloc] initWithObjects:@"i",@"k",@"f", nil];
        for(int i=0;i<[arr1 count];i++)
        {
            NSLog(@"%@",[arr1 objectAtIndex:i]);
        }
        
        //for in
        for(NSString *temp in arr1)
        {
            NSLog(@"%@",temp);
        }
        
        //练习 使用for in 来遍历@[@"a",@"b",@"c"];
        
        
        //分割字符串
        NSString *s1 = @"i am a people";
        NSArray *arr10 = [s1 componentsSeparatedByString:@" "];
        NSLog(@"%@",arr10);
        NSString *newStr = [NSString stringWithFormat:@"%@%@%@%@",[arr10 objectAtIndex:0],[arr10 objectAtIndex:1],[arr10 objectAtIndex:2],[arr10 objectAtIndex:3]];
        NSLog(@"%@",newStr);
        
        NSMutableString *s2 = [NSMutableString stringWithCapacity:0];
//        for(NSString *temp in arr10)
//        {
//            [s2 appendString:temp];
//        }
        for(int i = 0;i<[arr10 count];i++)
        {
            [s2 appendString:[arr10 objectAtIndex:i]];
        }
        NSLog(@"%@",s2);
        
        //练习 有电话号码 133-3333-3333,变成1333333333
        
        //1(333·) 333 3333
        
        //componentsSeparatedByString
        //1(333·)3333333
        //1333·)3333333
        //1333·3333333
        //13333333333
        
        //同时切很多
        NSString *tel = @"1(333·) 333 3333";
        NSArray *telArr = [tel componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"(·) "]];//传入要切的字符集合
        
        NSMutableString *s3 = [NSMutableString stringWithCapacity:0];
        for(int i = 0;i<[telArr count];i++)
        {
            if([[telArr objectAtIndex:i] isEqualToString:@""] == NO)//因为用set方法切出来的数组里会有垃圾@""的存在,所以需要判断一下每一个索引的内容是否为垃圾@""
            {
                [s3 appendString:[telArr objectAtIndex:i]];
            }
        }
        NSLog(@"%@",s3);
        NSLog(@"%@",telArr);
        
        //练习,<aaaa bbbb cccc dddd 1111>,截出来aaaabbbbccccdddd1111,提示笨办法,先切“ ”,再切(,再切)。简单的用set方法直接把@“”、(、)一起切了,要求打印切完的数组和切好的字符串
        
        NSString *tokenStr = @"<aaaa bbbb cccc dddd 1111>";//创建字符串
        NSArray *tokenArr = [tokenStr componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<> "]];//设置要切的字符集合,并切
        NSMutableString *tokenSubedStr = [NSMutableString stringWithCapacity:0];//可变字符串
        for(int i = 0;i<[tokenArr count];i++)//遍历
        {
            if([[tokenArr objectAtIndex:i]isEqualToString:@""] == NO)//判断是否垃圾
            {
                [tokenSubedStr appendString:[tokenArr objectAtIndex:i]];//拼截字符串
            }
        }
        NSLog(@"%@",tokenArr);
        NSLog(@"%@",tokenSubedStr);
        
        //练习 把“2014年6月20日 12:12:22”,切成2014620121222
        //1、声明字符串
        NSString *timeStr = @"2014年6月20日 12:12:22";
        //2、开切
        NSArray *timeArr = [timeStr componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"年月日: "]];
        //3、可变字符串创建
        NSMutableString *subOverStr = [NSMutableString stringWithCapacity:0];
        //4、遍历
        for(int i =0;i<[timeArr count];i++)
        {
            //5、判断垃圾
            if([[timeArr objectAtIndex:i] isEqualToString:@""] == NO)
            {
                //6、拼接
                [subOverStr appendString:[timeArr objectAtIndex:i]];
            }
        }
        //7、打印
        NSLog(@"%@",timeArr);
        NSLog(@"%@",subOverStr);
        
        //练习 有一个网络返回值:“作者:罗宾汉.大卫”,需求是我们只显示姓:作者:大卫
        NSString *author = @"作者:罗宾汉.大卫";
        NSArray *cutArr = [author componentsSeparatedByString:@"."];
        NSString *overStr = [NSString stringWithFormat:@"作者:%@",[cutArr objectAtIndex:[cutArr count]-1]];
        NSLog(@"%@",overStr);
        
        //练习 把@“作者:罗宾汉.大卫”的名截出来
        NSString *name = @"作者:罗宾汉.大卫";
        NSArray *arrTemp = [name componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@":."]];
        NSMutableString *tempStr = [NSMutableString stringWithCapacity:0];
        
        [tempStr appendString:[arrTemp objectAtIndex:1]];

2、NSMutableArray的所有方法

        //可变数组 NSMutableArray
        
        //创建方法
        NSMutableArray *mutableArr = [NSMutableArray arrayWithCapacity:0];//类方法创建
        NSLog(@"%@",mutableArr);
        //增删改
        //增,向数组里添加新的对象
        
        //add增加,向数组的最后一位增加,依次
        [mutableArr addObject:@"hello"];
        NSLog(@"%@",mutableArr);
        [mutableArr addObject:@"world"];
        NSLog(@"%@",mutableArr);
        
        //insert,向数组中某一位添加新对象
        [mutableArr insertObject:@"my" atIndex:1];
        NSLog(@"%@",mutableArr);
        
//        //删
//        //删除某一个索引的对象
//        [mutableArr removeObjectAtIndex:1];//需要判断是否越界
//        
//        //删除最后一位
//        [mutableArr removeLastObject];
//        
//        //一下删光,清空
//        [mutableArr removeAllObjects];
//        NSLog(@"%@",mutableArr);
        
        //改
        [mutableArr replaceObjectAtIndex:1 withObject:@"your"];
        NSLog(@"%@",mutableArr);
        
        //练习,有一个列表,列表里面有很多行,每行都显示一个人的名字,
        //依次是@"A"、@"B", --------------add::结果::A,B
        //然后又多了两个人名:@"C"、@"D",----------add::结果::A,B,C,D
        //然后C不见了,--------remove index::结果::A,B,D
        //然后A和B之间多了一个E, --------insert::结果::A,E,B,D
        //再然后B改名了变成了F, --------replace::结果::A,E,F,D
        //最后把数组清空 ---------removeall
        //每完成一步都打印一下,看看结果
        
        //练习,首先有一个可变数组,
        //1、向里面添加两个字符串@“1”,@“2”,
        //2、变成@“1”,@“4”,@“2”
        //3、变成@“5”,@“4”,@“2”
        //4、变成@“5”,@”4“
        NSMutableArray *arrNum = [NSMutableArray arrayWithCapacity:0];
        [arrNum addObject:@"1"];
        [arrNum addObject:@"2"];
        [arrNum insertObject:@"4" atIndex:1];
        [arrNum replaceObjectAtIndex:0 withObject:@"5"];
        [arrNum removeObjectAtIndex:2];
        //[arrNum removeLastObject];
        NSLog(@"%@",arrNum);
        
        [arrNum addObject:@"1"];
        [arrNum addObject:@"10"];
        [arrNum addObject:@"6"];
        //5,4,1,10,6
        
        //交换位置
        NSLog(@"%@",arrNum);
        [arrNum exchangeObjectAtIndex:1 withObjectAtIndex:4];//把前后两个参数的index位置的对象交换
        NSLog(@"%@",arrNum);
        
        //排序
        //冒泡
        for(int i = 0;i<[arrNum count]-1;i++)
        {
            for(int j = 0;j<[arrNum count]-1-i;j++)
            {
                if([[arrNum objectAtIndex:j] compare:[arrNum objectAtIndex:j+1] options:NSCaseInsensitiveSearch]<0)
                {
                    [arrNum exchangeObjectAtIndex:j withObjectAtIndex:j+1];
                }
            }
        }
        NSLog(@"%@",arrNum);
        
        //现在有一个数组是
        NSArray *arrhere = [NSArray arrayWithObjects:@"4",@"6",@"2",@"8",@"1", nil];
        //要进行排序
        //思路,把NSArray 变成NSMutableArray,当要对对象本身进行修改时,要把对象转为可变的类型
        //创建一个Mutable的数组
        NSMutableArray *mutableArrHere = [NSMutableArray arrayWithCapacity:0];
    
        for(int i = 0;i<[arrhere count];i++)
        {
            [mutableArrHere addObject:[arrhere objectAtIndex:i]];
        }
        //然后对这个可变的数组进行排序
    }

 

转载于:https://my.oschina.net/jimolengsha/blog/686485

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值