Obj-C数组以及字符串拼接与分割
本文转载至 http://mobile.51cto.com/iphone-392148.htm
Obj-C只是增加了一点“特殊语料”的C语言,所以可以用printf()代替NSLog()。但我们建议使用NSLog,因为它添加了特性,例如时间戳,日期戳和自动附加换行符(‘\n’)等。
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:@""]) //与空串进行比较(字符串是不能进行==比较的,要使用函数)
Obj-C数组以及字符串拼接与分割的更多相关文章
- OC 数组以及字符串拼接与分割
//@""空的字符串对象-------分割 NSString * ptr = @"I am a man"; NSArray * array = [ptr com ...
- NSString用法,object-C数组以及字符串拼接和分割
一.介绍使用NSString创建一个字符串的代码如下: #import <Foundation/Foundation.h>int main (int argc, char *argv[]) ...
- java数组、字符串拼接
1. 数组实现拼接 int[] arr ={11,22,33,44,55,66}; System.out.print("["); for (int i = 0; i <arr ...
- 操作 html 的时候是使用 dom 方法还是字符串拼接?
比如一个列表里面有很多个 li,要给他们加上数据.但多少个 li 是不确定的,由后台数据确定.这时候,就要动态生成 html 内容了. 那么,这个过程, 是使用 += 方法把标签.数据进行一个个的字符 ...
- 字符串拼接 strcat ;数组和指针的区别
问题:字符串拼接 strcat 方法1: 开辟新空间,存放结果: #include <stdio.h> #include <stdlib.h> #include <str ...
- php把字符串指定字符分割成数组
<?php $str="1|2|3|4|5|"; $var=explode("|",$str); print_r($var); ?> $var=ex ...
- JavaScript中的数组和字符串
知识内容: 1.JavaScript中的数组 2.JavaScript中的字符串 一.JavaScript中的数组 1.JavaScript中的数组是什么 数组指的是数据的有序列表,每种语言基本上都有 ...
- JavaScript 数组、字符串、Map、Set 方法整理
在线阅读 https://www.kancloud.cn/chenmk/web-knowledges/1080519 数组 isArray():Array.isArray(value) 用于检测变量是 ...
- JS中,JSON 和 对象互转,数组和字符串的转换?
JSON 与 J对象转化 要实现从对象转换为 JSON 字符串,使用 JSON.stringify() 方法: 如下: var json = JSON.stringify({a: 'Hello', b ...
随机推荐
- 上机题目(0基础)- Java网络操作-Socket实现client和server端通信二(Java)
上一节实现了client像server端发送请求.本节将实现server端向client回传信息.实现原理非常easy,在原来的基础上.在server端实现输出流,在client实现输入流就可以,详细 ...
- Cocos2d-x游戏开发之luaproject创建
操作系统:OS X 10.85 Cocos2d-x 版本号: 2.2.1 使用Cocos2d-x 能够创建luaproject,已经使用cpp创建的project也能够继承lua进行开发,可是lua并 ...
- 在CcentOS系统上将deb包转换为rpm包
deb文件格式本是ubuntu/debian系统下的安装文件,那么我想要在redhat/centos/fedora中安装,需要把deb格式的软件包转化成rpm格式. 需要用到的转换工具:alien_8 ...
- mybatis 3简介
http://www.mybatis.org/mybatis-3/zh/index.html
- 2017.6.27 跟开涛学spring3--spring概述
参考来自:http://www.importnew.com/17474.html 注意,项目中使用的是spring4,这里学习的是spring3.关于spring4的变化:http://ningand ...
- java 实体序列化的意义
一.序列化的意义 客户端访问了某个能开启会话功能的资源, web服务器就会创建一个与该客户端对应的HttpSession对象,每个HttpSession对象都要站用一定的内存空间.如果在某一时间段内访 ...
- Java基础学习过程
转载:http://blog.csdn.net/scythe666/article/details/51699954JVM 1. 内存模型( 内存分为几部分? 堆溢出.栈溢出原因及实例?线上如何排查? ...
- Node.js 网页瘸腿爬虫初体验
延续上一篇,想把自己博客的文档标题利用Node.js的request全提取出来,于是有了下面的初哥爬虫,水平有限,这只爬虫目前还有点瘸腿,请看官你指正了. // 内置http模块,提供了http服务器 ...
- ContentProvider之通过ContentResolver获取图像、视频、音频举例
MediaStore中定义了一系列的数据表格,通过ContentResolver提供的查询接口,我们能够得到各种须要的媒体信息.通过下面两个URI能够扫描设备外部和内部的媒体文件.Android系统提 ...
- php 位运算符的实际应用(权限判断)
关键代码: define("READ", 1); define("WRITE", 2); define("DELETE", 4); defi ...