20150611_OC之数组NSArray中函数操作

来源:互联网 发布:会员积分软件免费版 编辑:程序博客网 时间:2024/06/05 16:37

我们在学习及开发中,经常对数组进行各种操作,使用系统库提供的函数对数组操作极其方便,下面就来 介绍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
原创粉丝点击