• Obj-C数组以及字符串拼接与分割


     

    本文转载至 http://mobile.51cto.com/iphone-392148.htm

    Obj-C只是增加了一点“特殊语料”的C语言,所以可以用printf()代替NSLog()。但我们建议使用NSLog,因为它添加了特性,例如时间戳,日期戳和自动附加换行符(‘ ’)等。

    AD:WOT2014课程推荐:实战MSA:用开源软件搭建微服务系统

    1.OC的数组成员是任意的对象指针    与C中的链表结构类似(以nil结尾)    一切的数组操作不能越界

    OC的数组分为不可变数组 NSArray    可变数组 NSMutableArray

    1. NSArray * array = [[NSArray alloc]initWithObjects:@"one",@"two",@"three", nil]; 
    2.     NSLog(@"%@",[array objectAtIndex:0]);//通过下标获取数组成员(下标从0开始) 
    3.     NSLog(@"%ld",[array count]);//获取数组有效成员个数 (不包括nil) 
    4.     for (i = 0; i < [array count]; i++) {//遍历数组(C方法) 
    5.          NSLog(@"%@",[array objectAtIndex:i]); 
    6.     } 
    7.     NSLog(@"%@",array);//(OC)查看数组内容(先给array发送description消息,然后给每个成员都发送一个description消息) 
    8.     NSArray * array1 = [[NSArray alloc]initWithArray:array];//创建数组对象 相当于拷贝 
    9.     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.不可变数组

    1. -------查找 
    2.       
    3.     NSArray * array = [[NSArray alloc]initWithObjects:@"one",@"two",@"three",@"one", nil];    
    4.     NSUInteger index = [array indexOfObject:@"one123"];//返回第一个找到的数组成员对应的下标 找不到返回NSNotFound    
    5.     index = [array indexOfObject:@"one" inRange:NSMakeRange(1, 3)];//在指定范围内查找 
    6.         if (index != NSNotFound) { 
    7.              NSLog(@"%ld",index); 
    8.         } 
    9.     ----抽取 组成新的数组 
    10.     NSArray * array1 = [array objectsAtIndexes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(1, 3)]]; 
    11.     《数字集合》 
    12.     NSIndexSet这是个数字集合类 
    13.     [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(1, 3)]产生一个数字集合 

    3.可变数

    1. NSMutableArray * array = [[NSMutableArray alloc]initWithObjects:@"one",@"two",@"three",@"four", nil]; 
    2.     [array addObject:@"five"];//在数组尾部插入元素 
    3.     [array insertObject:@"six" atIndex:5];//在数组指定下标位置插入元素(不能越界,最大值为length)    
    4.     [array removeObject:@"six"];//删除指定元素(数组中出现的所有位置都将被删除) 
    5.     [array removeObject:@"two" inRange:NSMakeRange(0, 3)];//从指定下标位置开始的指定长度内删除指定元素 
    6.     [array removeLastObject];//删除最后一个元素 
    7.     [array removeAllObjects];//删除所有元素         
    8.     [array replaceObjectAtIndex:3 withObject:@"ios"];//将指定下标位置元素替换为指定的元素 
    9.     [array exchangeObjectAtIndex:0 withObjectAtIndex:3];//将指定下标的两个元素进行交换 

    4.字符串分割与拼接

    1. //@""   空的字符串对象 
    2.     -------分割 
    3.     NSString * ptr = @"I am a man"
    4.     NSArray * array = [ptr componentsSeparatedByString:@" "];//将字符串整体作为分割条件 返回值为NSArray不可变数组 
    5.     NSMutableArray * array1 = [NSMutableArray arrayWithArray:array];//若修改,则将NSArray转化为NSMutableArray 
    6.     NSArray * array2 = [ptr componentsSeparatedByCharactersInSet:[NSCharacterSet                                            characterSetWithCharactersInString:@", "]];//以字符串中的字符作为分割条件进行分割 
    7.     《字符集合》 
    8.     NSCharacterSet 这是个字符集合类 
    9.     [NSCharacterSet characterSetWithCharactersInString:@", "]//把字符串转化为字符集合 
    10.     -------拼接 
    11.     NSString * str = [array componentsJoinedByString:@" "];   
    12.     若分割条件出现在开头或者结尾,则会出现空串@"",如果不需要,则需要转化成NSMutableString对空串进行处理 
    13.     func1:  [array1 removeObject:@""];     //找到空串直接删除 
    14.     func2:  for(id obj in array1){ 
    15.                 if([obj length] == 0)           //空串的长度为0 
    16.                 if([obj isEqualToString:@""])   //与空串进行比较(字符串是不能进行==比较的,要使用函数)        
  • 相关阅读:
    切换到真正的最高权限 SYSTEM 账户界面
    javascript中replace的正则表达式语法
    微软系统漏洞_超长文件路径打造私人地盘
    JAVA控制台
    PowerPoint绘图笔不能用
    《JavaScript核心技术》
    Catch(...) C++中三个点
    XMLHttp连续调用SEND需要注意的问题
    Wscript中的事件机制
    JavaScript(JS)常用的正则表达式
  • 原文地址:https://www.cnblogs.com/Camier-myNiuer/p/3731706.html
Copyright © 2020-2023  润新知