20150611_OC之数组NSArray中函数操作

我们在学习及开发中,经常对数组进行各种操作,使用系统库提供的函数对数组操作极其方便,下面就来 介绍NSArray中常用的方法的使用:

//
//  main.m
//  IOS150611_ObjectiveC_NSArrayOperation
//
//  Created by Peng Junlong on 15/6/11.
//  Copyright (c) 2015年 Peng Junlong. All rights reserved.
//
//*******************************
//*
//*          数组的操作
//*
//*******************************
#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        //@[@"one",@"two",@"three",@"four",@"five"]表示一个数组对象
        NSArray *array1 = [[NSArray alloc] initWithObjects:@"one",@"two",@"three",@"four",@"five", nil];
        
        //计算数组元素的个数
        NSInteger cnt = [array1 count];
        NSLog(@"cnt = %ld",cnt);
        //获取指定位置的对象
        id obj = [array1 objectAtIndex:2];
        NSLog(@"obj = %@",obj);
        
        //添加数组元素
        //- (NSArray *)arrayByAddingObject:(id)anObject;
        NSArray *array2 = [array1 arrayByAddingObject:@"six"];      //实质是创建一个新的数组对象array2来存储array1中的元素和six,不是直接修改array1
        NSLog(@"array2 = %@",array2);
        
        //用传入的数组元素添加到数组
        //- (NSArray *)arrayByAddingObjectsFromArray:(NSArray *)otherArray;
        NSArray *otherArray = [[NSArray alloc] initWithObjects:@"hello",@"world", nil];
        NSArray *array3 = [array1 arrayByAddingObjectsFromArray:otherArray];
        NSLog(@"array3 = %@",array3);
        
        //用给定的分隔符链接数组中的元素,返回字符串
        //- (NSString *)componentsJoinedByString:(NSString *)separator;
        NSString *str = [array3 componentsJoinedByString:@"->"];
        NSLog(@"str = %@",str);                   //结果:str = one->two->three->four->five->hello->world
        
        //判断是否包含某个对象
        BOOL ret = [array3 containsObject:@"hello"];
        NSLog(@"ret = %i",ret);                   //结果:ret = 1
        
        //返回两个数组中第一个相同的对象
        //- (id)firstObjectCommonWithArray:(NSArray *)otherArray;
        id obj2 = [array3 firstObjectCommonWithArray:otherArray];
        NSLog(@"obj2 = %@",obj2);                 //结果:obj2 = hello
        
        //返回传入对象在数组中第一次出现的位置
        //- (NSUInteger)indexOfObject:(id)anObject;
        NSArray *array4 = [NSArray arrayWithObjects:@"ne",@"two",@"three",@"one",@"two",@"one", nil];
        NSUInteger index = [array4 indexOfObject:@"two"];
        NSLog(@"index = %lu",index);              //结果:index = 1
        
        //返回传入对象在数组中指定范围内第一次出现的位置
        //- (NSUInteger)indexOfObject:(id)anObject inRange:(NSRange)range;
        NSRange range = {2,3};
        index = [array4 indexOfObject:@"one" inRange:range];
        NSLog(@"index = %lu",index);
        
        //返回和传入对象相同的对象在数组中第一次出现的位置
        NSString *s = [NSString stringWithUTF8String:"one"];
        index = [array4 indexOfObjectIdenticalTo:s];
        NSLog(@"index = %lu",index);
        
        //判断两个数组是否相等
        BOOL ret3 = [array2 isEqualToArray:array3];
        NSLog(@"ret3 = %d",ret3);
        
        //获取数组中的第一个元素
        id obj3 = [array4 firstObject];
        NSLog(@"obj3 = %@",obj3);
        
        //获取数组中的最后一个元素
        id obj4 = [array4 lastObject];
        NSLog(@"obj4 = %@",obj4);
        
        //==================数组的遍历=================
        //方法一:下标法
        NSArray *array5 = @[@"one",@"two",@"three",@"four"];
        NSUInteger len = [array5 count];
        for (NSUInteger i =0; i<len; i++) {
            NSLog(@"%@",[array5 objectAtIndex:i]);
        }
        
        //方法二:枚举器法
        //正序枚举所有对象
        //生成枚举器对象
        NSEnumerator *enumerator = [array5 objectEnumerator];
        id obj5 = nil;
        while (obj5 = [enumerator nextObject]) {    // 执行一次nextObject会自动指向下一个对象的地址
            NSLog(@"%@",obj5);
        }
        //逆序枚举所有对象
        NSEnumerator *reverseEnumertator = [array5 reverseObjectEnumerator];
        while (obj5 = [reverseEnumertator nextObject]) {
            NSLog(@"%@",obj5);
            
        }
        
        //方法三:快速枚举法,for循环的一种
        for(id item in array5)
        {
            NSLog(@"%@",item);
        }
        
        //================数组排序===============
        //- (NSArray *)sortedArrayUsingSelector:(SEL)comparator;    //SEL相当于C中的函数指针,选择一个函数进行排序
        NSArray *array6 = @[@"one",@"two",@"three",@"four",@"five"];
        NSArray *sortArray = [array6 sortedArrayUsingSelector:@selector(compare:)];
        NSLog(@"sortArray = %@",sortArray);
        
        //================数组提取===============
        //提取指定范围内的子数组(连续的)
        NSArray *subArray = [array6 subarrayWithRange:NSMakeRange(2, 3)];
        NSLog(@"%@",subArray);
        
        //- (NSArray *)objectsAtIndexes:(NSIndexSet *)indexes;
        NSMutableIndexSet *indexSet = [[NSMutableIndexSet alloc] initWithIndex:0];
        [indexSet addIndex:3];
        [indexSet addIndex:4];
        NSArray *subArray2 = [array6 objectsAtIndexes:indexSet];
        NSLog(@"%@",subArray2);
        
        //以传入的字符串整体分割字符串,返回一个数组
        /*2.对称字符串(10分)
         传入一个字符串,将这个字符串组合成一个新的对称字符串返回
         例如:
         传入:@"I love you Mery"
         返回:@"I love you Mery Mery you love I"
         */
        
        NSArray *array7 = [@"I love you  Mery" componentsSeparatedByString:@" "];  //以" "分割字符串
//        NSMutableArray *mutableArray = [NSMutableArray arrayWithArray:array7];
//        [mutableArray removeObject:@""];            //去除空的字符串对象
//        NSLog(@"mutableArray = %@",mutableArray);
        NSArray *destArray = [NSArray arrayWithArray:array7];
        for (NSInteger i=[array7 count]-1; i>0; i--) {
            destArray = [destArray arrayByAddingObject:[array7 objectAtIndex:i]];
        }
        
        NSString *destString = [destArray componentsJoinedByString:@" "];
        NSLog(@"%@",destString);                        //结果:I love you Mery Mery you love
        
        
        /*
        //2, 字符串分割 @“I #am Prime  # # #Optimus”
        //字符串分割函数  按照 @" #"字符串整体分割
        
        //以字符串整体进行分割
        NSArray *array8 = [@"I #am Prime  # # #Optimus" componentsSeparatedByString:@" #"];
        NSLog(@"array8 = %@",array8);
        
        //以字符集合进行分割
        //- (NSArray *)componentsSeparatedByCharactersInSet:(NSCharacterSet *)separator
        NSArray *array9 = [@"I #am Prime  # # #Optimus" componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@" #"]];
        NSLog(@"array9 = %@",array9);
        
         */
        
        //3有两个字符串@"I am a good girl";@"You are a bad boy"; 将这两个字符串单词,交叠,形成系的字符串 @"I You am are a a good bad girl boy"
        printf("输入两个字符串:");
        char str1[100] = {};
        char str2[100] = {};
        scanf("%[^\n]\n%[^\n]",str1,str2);
        NSString *string1 = [NSString stringWithUTF8String:str1];
        NSString *string2 = [NSString stringWithUTF8String:str2];
        NSArray *array10 = [string1 componentsSeparatedByString:@" "];  //以" "分割字符串
        NSArray *array11 = [string2 componentsSeparatedByString:@" "];
        NSArray *destArray1 = [NSArray array];
        NSInteger len10 = [array10 count];
        NSInteger len11 = [array11 count];
        NSInteger i=0;
        NSInteger j=0;
        while (i<len10 && j<len11) {
            destArray1 = [destArray1 arrayByAddingObject:array10[i]];
            destArray1 = [destArray1 arrayByAddingObject:array11[j]];
            i++;
            j++;
        }
        if (i<len10) {
            while (i<len10) {
                destArray1 = [destArray1 arrayByAddingObject:array10[i]];
                i++;
            }
        }
        if (j<len11) {
            while (j<len11) {
                destArray1 = [destArray1 arrayByAddingObject:array11[j]];
                j++;
            }
        }

        NSString *destString1 = [destArray1 componentsJoinedByString:@" "];
        NSLog(@"%@",destString1);
        
    }
    return 0;
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值