zoukankan      html  css  js  c++  java
  • Objective-c 数组以及字符串的拼接和分割

     1.OC的数组成员是任意的对象指针    与C中的链表结构类似(以nil结尾)    一切的数组操作不能越界
    OC的数组分为不可变数组 NSArray    可变数组 NSMutableArray
    01    NSArray * array = [[NSArray alloc]initWithObjects:@"one",@"two",@"three", nil];
    02    NSLog(@"%@",[array objectAtIndex:0]);//通过下标获取数组成员(下标从0开始)
    03    NSLog(@"%ld",[array count]);//获取数组有效成员个数 (不包括nil)
    04    for (i = 0; i < [array count]; i++) {//遍历数组(C方法)
    05         NSLog(@"%@",[array objectAtIndex:i]);
    06    }
    07    NSLog(@"%@",array);//(OC)查看数组内容(先给array发送description消息,然后给每个成员都发送一个description消息)
    08    NSArray * array1 = [[NSArray alloc]initWithArray:array];//创建数组对象 相当于拷贝
    09    NSArray * arry2 = [NSArray arrayWithArray:array];//创建数组对象 相当于拷贝
    10    NSEnumerator * enumer = [array objectEnumerator];//正序枚举器
    11    //创建一个枚举器 把数组的每个元素的地址一次赋给枚举器,然后建立起某种关联 (枚举器只能用来读数组成员)
    12    //枚举时 会和数组创建某种关联(修改监视器/迭代器) 限制枚举的同时不能修改元素 只能读不能写
    13    id obj;
    14    //第一次循环把数组的第一个元素赋给obj  第二次循环把第二个数组元素赋给obj
    15    while (obj = [enumer nextObject]) {             //遍历数组
    16         NSLog(@"%@",obj);
    17    }
    18    //快速枚举  第一次循环把array的第一个元素赋给ob  第二次循环把array的第二个元素赋给ob 直到nil(只能读不能改)
    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.不可变数组
    01    -------查找
    02    
    03    NSArray * array = [[NSArray alloc]initWithObjects:@"one",@"two",@"three",@"one", nil];
    04    
    05    NSUInteger index = [array indexOfObject:@"one123"];//返回第一个找到的数组成员对应的下标 找不到返回NSNotFound
    06    
    07    index = [array indexOfObject:@"one" inRange:NSMakeRange(1, 3)];//在指定范围内查找
    08        if (index != NSNotFound) {
    09             NSLog(@"%ld",index);
    10        }
    11    ----抽取 组成新的数组
    12    NSArray * array1 = [array objectsAtIndexes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(1, 3)]];
    13    《数字集合》
    14    NSIndexSet这是个数字集合类
    15    [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(1, 3)]产生一个数字集合
    3.可变数组
    01    NSMutableArray * array = [[NSMutableArray alloc]initWithObjects:@"one",@"two",@"three",@"four", nil];
    02    [array addObject:@"five"];//在数组尾部插入元素
    03    [array insertObject:@"six" atIndex:5];//在数组指定下标位置插入元素(不能越界,最大值为length)
    04    
    05    [array removeObject:@"six"];//删除指定元素(数组中出现的所有位置都将被删除)
    06    [array removeObject:@"two" inRange:NSMakeRange(0, 3)];//从指定下标位置开始的指定长度内删除指定元素
    07    [array removeLastObject];//删除最后一个元素
    08    [array removeAllObjects];//删除所有元素
    09         
    10    [array replaceObjectAtIndex:3 withObject:@"ios"];//将指定下标位置元素替换为指定的元素
    11    [array exchangeObjectAtIndex:0 withObjectAtIndex:3];//将指定下标的两个元素进行交换
    4.字符串分割与拼接
    01    //@""   空的字符串对象
    02    -------分割
    03    NSString * ptr = @"I am a man";
    04    NSArray * array = [ptr componentsSeparatedByString:@" "];//将字符串整体作为分割条件 返回值为NSArray不可变数组
    05    NSMutableArray * array1 = [NSMutableArray arrayWithArray:array];//若修改,则将NSArray转化为NSMutableArray
    06    NSArray * array2 = [ptr componentsSeparatedByCharactersInSet:[NSCharacterSet                                            characterSetWithCharactersInString:@", "]];//以字符串中的字符作为分割条件进行分割
    07    《字符集合》
    08    NSCharacterSet 这是个字符集合类
    09    [NSCharacterSet characterSetWithCharactersInString:@", "]//把字符串转化为字符集合
    10    -------拼接
    11    NSString * str = [array componentsJoinedByString:@" "];
    12    
    13    若分割条件出现在开头或者结尾,则会出现空串@"",如果不需要,则需要转化成NSMutableString对空串进行处理
    14    func1:  [array1 removeObject:@""];     //找到空串直接删除
    15    func2:  for(id obj in array1){
    16                if([obj length] == 0)           //空串的长度为0
    17                if([obj isEqualToString:@""])   //与空串进行比较(字符串是不能进行==比较的,要使用函数)       
    18            }

  • 相关阅读:
    一位资深程序员大牛给予Java初学者的学习路线建议
    Java基础部分全套教程.
    Java进阶面试问题列表
    成为伟大程序员的 10 个要点
    一位资深程序员大牛给予Java初学者的学习路线建议
    2年Java开发工作经验面试总结
    有效处理Java异常三原则
    Java打飞机小游戏(附完整源码)
    原生ajax封装,包含post、method方式
    手机端布局,rem布局动态获取根字体大小
  • 原文地址:https://www.cnblogs.com/liuxp1990/p/3416224.html
Copyright © 2011-2022 走看看