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            }

  • 相关阅读:
    IXmlSerializable With WCFData Transfer in Service Contracts
    Difference Between XmlSerialization and BinarySerialization
    Using XmlSerializer (using Attributes like XmlElement , XmlAttribute etc ) Data Transfer in Service Contracts
    Introducing XML Serialization
    Version Tolerant Serialization
    Which binding is bestWCF Bindings
    Data Transfer in Service Contracts
    DataContract KnownTypeData Transfer in Service Contracts
    Using the Message ClassData Transfer in Service Contracts
    DataContract POCO SupportData Transfer in Service Contracts
  • 原文地址:https://www.cnblogs.com/liuxp1990/p/3416224.html
Copyright © 2011-2022 走看看