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:@""])   //與空串進行比較(字符串是不能進行==比較的,要使用函數)        
        }
相關文章
相關標籤/搜索