你好,游客 登录
背景:
阅读新闻

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

[日期:2013-05-02] 来源:oschina  作者: [字体: ]

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

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

  NSArray * array = [[NSArray alloc]initWithObjects:@"one",@"two",@"three", nil];

  NSLog(@"%@",[array objectAtIndex:0]);//通过下标获取数组成员(下标从0开始)

  NSLog(@"%ld",[array count]);//获取数组有效成员个数 (不包括nil)

  for (i = 0; i < [array count]; i++) {//遍历数组(C方法)

  NSLog(@"%@",[array objectAtIndex:i]);

  }

  NSLog(@"%@",array);//(OC)查看数组内容(先给array发送description消息,然后给每个成员都发送一个description消息)

  NSArray * array1 = [[NSArray alloc]initWithArray:array];//创建数组对象 相当于拷贝

  NSArray * arry2 = [NSArray arrayWithArray:array];//创建数组对象 相当于拷贝

  NSEnumerator * enumer = [array objectEnumerator];//正序枚举器

  //创建一个枚举器 把数组的每个元素的地址一次赋给枚举器,然后建立起某种关联 (枚举器只能用来读数组成员)

  //枚举时 会和数组创建某种关联(修改监视器/迭代器) 限制枚举的同时不能修改元素 只能读不能写

  id obj;

  //第一次循环把数组的第一个元素赋给obj  第二次循环把第二个数组元素赋给obj

  while (obj = [enumer nextObject]) {             //遍历数组

  NSLog(@"%@",obj);

  }

  //快速枚举  第一次循环把array的第一个元素赋给ob  第二次循环把array的第二个元素赋给ob 直到nil(只能读不能改)

  for(id ob in array){

  NSLog(@"%@",ob);

  }

  //逆序输出数组(创建逆序枚举器  第一次循环把最后一个元素赋给obj )

  NSEnumerator * enumer1 = [array reverseObjectEnumerator];

  while (obj = [enumer1 nextObject]) {

  NSLog(@"%@",obj);

  }

  if ([obj isKindOfClass:[Dog class]]) //获取类的类型 判是否是指定类的对象

  if ([obj isMemberOfClass:[Dog class]]) {

  }

  2.不可变数组

  -------查找

  NSArray * array = [[NSArray alloc]initWithObjects:@"one",@"two",@"three",@"one", nil];

  NSUInteger index = [array indexOfObject:@"one123"];//返回第一个找到的数组成员对应的下标 找不到返回NSNotFound

  index = [array indexOfObject:@"one" inRange:NSMakeRange(1, 3)];//在指定范围内查找

  if (index != NSNotFound) {

  NSLog(@"%ld",index);

  }

  ----抽取 组成新的数组

  NSArray * array1 = [array objectsAtIndexes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(1, 3)]];

  《数字集合》

  NSIndexSet这是个数字集合类

  [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(1, 3)]产生一个数字集合

  3.可变数

  NSMutableArray * array = [[NSMutableArray alloc]initWithObjects:@"one",@"two",@"three",@"four", nil];

  [array addObject:@"five"];//在数组尾部插入元素

  [array insertObject:@"six" atIndex:5];//在数组指定下标位置插入元素(不能越界,最大值为length)

  [array removeObject:@"six"];//删除指定元素(数组中出现的所有位置都将被删除)

  [array removeObject:@"two" inRange:NSMakeRange(0, 3)];//从指定下标位置开始的指定长度内删除指定元素

  [array removeLastObject];//删除最后一个元素

  [array removeAllObjects];//删除所有元素

  [array replaceObjectAtIndex:3 withObject:@"ios"];//将指定下标位置元素替换为指定的元素

  [array exchangeObjectAtIndex:0 withObjectAtIndex:3];//将指定下标的两个元素进行交换

  4.字符串分割与拼接

  //@""   空的字符串对象

  -------分割

  NSString * ptr = @"I am a man";

  NSArray * array = [ptr componentsSeparatedByString:@" "];//将字符串整体作为分割条件 返回值为NSArray不可变数组

  NSMutableArray * array1 = [NSMutableArray arrayWithArray:array];//若修改,则将NSArray转化为NSMutableArray

  NSArray * array2 = [ptr componentsSeparatedByCharactersInSet:[NSCharacterSet                                            characterSetWithCharactersInString:@", "]];//以字符串中的字符作为分割条件进行分割

  《字符集合》

  NSCharacterSet 这是个字符集合类

  [NSCharacterSet characterSetWithCharactersInString:@", "]//把字符串转化为字符集合

  -------拼接

  NSString * str = [array componentsJoinedByString:@" "];

  若分割条件出现在开头或者结尾,则会出现空串@"",如果不需要,则需要转化成NSMutableString对空串进行处理

  func1:  [array1 removeObject:@""];     //找到空串直接删除

  func2:  for(id obj in array1){

  if([obj length] == 0)           //空串的长度为0

  if([obj isEqualToString:@""])   //与空串进行比较(字符串是不能进行==比较的,要使用函数)

  }





收藏 推荐 打印 | 录入: | 阅读:
相关新闻      
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数
点评:
       
评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款