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

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

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.可变数组 spa

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:@""])   //与空串进行比较(字符串是不能进行==比较的,要使用函数)        
        }
相关文章
相关标签/搜索