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

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

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. NSArray * array = [[NSArray alloc]initWithObjects:@"one",@"two",@"three",@"one", nil];
  3. NSUInteger index = [array indexOfObject:@"one123"];//返回第一个找到的数组成员对应的下标 找不到返回NSNotFound
  4. index = [array indexOfObject:@"one" inRange:NSMakeRange(1, 3)];//在指定范围内查找
  5. if (index != NSNotFound) {
  6. NSLog(@"%ld",index);
  7. }
  8. ----抽取 组成新的数组
  9. NSArray * array1 = [array objectsAtIndexes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(1, 3)]];
  10. 《数字集合》
  11. NSIndexSet这是个数字集合类
  12. [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:@""])   //与空串进行比较(字符串是不能进行==比较的,要使用函数)

Obj-C数组以及字符串拼接与分割的更多相关文章

  1. OC 数组以及字符串拼接与分割

    //@""空的字符串对象-------分割 NSString * ptr = @"I am a man"; NSArray * array = [ptr com ...

  2. NSString用法,object-C数组以及字符串拼接和分割

    一.介绍使用NSString创建一个字符串的代码如下: #import <Foundation/Foundation.h>int main (int argc, char *argv[]) ...

  3. java数组、字符串拼接

    1. 数组实现拼接 int[] arr ={11,22,33,44,55,66}; System.out.print("["); for (int i = 0; i <arr ...

  4. 操作 html 的时候是使用 dom 方法还是字符串拼接?

    比如一个列表里面有很多个 li,要给他们加上数据.但多少个 li 是不确定的,由后台数据确定.这时候,就要动态生成 html 内容了. 那么,这个过程, 是使用 += 方法把标签.数据进行一个个的字符 ...

  5. 字符串拼接 strcat ;数组和指针的区别

    问题:字符串拼接 strcat 方法1: 开辟新空间,存放结果: #include <stdio.h> #include <stdlib.h> #include <str ...

  6. php把字符串指定字符分割成数组

    <?php $str="1|2|3|4|5|"; $var=explode("|",$str); print_r($var); ?> $var=ex ...

  7. JavaScript中的数组和字符串

    知识内容: 1.JavaScript中的数组 2.JavaScript中的字符串 一.JavaScript中的数组 1.JavaScript中的数组是什么 数组指的是数据的有序列表,每种语言基本上都有 ...

  8. JavaScript 数组、字符串、Map、Set 方法整理

    在线阅读 https://www.kancloud.cn/chenmk/web-knowledges/1080519 数组 isArray():Array.isArray(value) 用于检测变量是 ...

  9. JS中,JSON 和 对象互转,数组和字符串的转换?

    JSON 与 J对象转化 要实现从对象转换为 JSON 字符串,使用 JSON.stringify() 方法: 如下: var json = JSON.stringify({a: 'Hello', b ...

随机推荐

  1. Could not find com.android.tools.build:gradle:3.0.0-alpha3

    最近使用Android Studio 3.0 canary 3 时新建项目遇到标题所示错误,后网上找到解决办法.记录如下: 在项目的build.gradle文件中添加如下内容即可解决. reposit ...

  2. Linux文件压缩与解压命令

    1  .zip 格式压缩与解压 压缩命令 zip 压缩文件名 源文件 zip  -r   压缩目录名       源目录 解压命令 unzip 文件名 td@td-Lenovo-IdeaPad-Y41 ...

  3. 1084. Broken Keyboard (20)【字符串操作】——PAT (Advanced Level) Practise

    题目信息 1084. Broken Keyboard (20) 时间限制200 ms 内存限制65536 kB 代码长度限制16000 B On a broken keyboard, some of ...

  4. MVC流程图

    MVC请求流程图 一 MVC流程图 二 流程步骤 客户端浏览器发送请求到MVC应用程序. Global.ascx接收这个请求,并且执行基于使用RouteTable,RouteData,UrlRouti ...

  5. 2017.10.13 git提交时忽略不必要的文件或文件夹

    参考来自:git学习六:git提交忽略不必要的文件或文件夹 1.应用场景 创建maven项目,使用git提交,有时需要忽略不必要的文件或文件夹,只保留一些基本. 例如如下截图,实际开发中我们只需提交: ...

  6. Android 珍藏(一)

    1,调web浏览器 Uri myBlogUri = Uri.parse("http://xxxxx.com"); returnIt = new Intent(Intent.ACTI ...

  7. ubuntu apt-get install xxx时一直报错E: Unable to locate package xxxxxxx

    $ sudo add-apt-repository main $ sudo add-apt-repository universe $ sudo add-apt-repository restrict ...

  8. Linux下的各文件夹的作用(转)

    linux下的文件结构,看看每个文件夹都是干吗用的/bin 二进制可执行命令 /dev 设备特殊文件 /etc 系统管理和配置文件 /etc/rc.d 启动的配置文件和脚本 /home 用户主目录的基 ...

  9. C4:原型模式 Prototype

    用原型实例指定创建对象的种类,并且拷贝这些原型创建新的对象.应用场景: A.用new创建对象通常有较为复杂的数据准备或权限准备B.对象较大,拷贝对象可以节省内存 UML图: class WorkExp ...

  10. 使用file_get_contents下载图片

        <?php /* 当你在搭建网站时,从远程服务器下载某张图片并且将其保存在自己的服务器上,这一操作会经常用到.代码如下: */ $image = file_get_contents('h ...