Obj-C數(shù)組以及字符串拼接與分割
作者:佚名
Obj-C只是增加了一點“特殊語料”的C語言,所以可以用printf()代替NSLog()。但我們建議使用NSLog,因為它添加了特性,例如時間戳,日期戳和自動附加換行符(‘\n’)等。
1.OC的數(shù)組成員是任意的對象指針 與C中的鏈表結構類似(以nil結尾) 一切的數(shù)組操作不能越界
OC的數(shù)組分為不可變數(shù)組 NSArray 可變數(shù)組 NSMutableArray
- NSArray * array = [[NSArray alloc]initWithObjects:@"one",@"two",@"three", nil];
- NSLog(@"%@",[array objectAtIndex:0]);//通過下標獲取數(shù)組成員(下標從0開始)
- NSLog(@"%ld",[array count]);//獲取數(shù)組有效成員個數(shù) (不包括nil)
- for (i = 0; i < [array count]; i++) {//遍歷數(shù)組(C方法)
- NSLog(@"%@",[array objectAtIndex:i]);
- }
- NSLog(@"%@",array);//(OC)查看數(shù)組內(nèi)容(先給array發(fā)送description消息,然后給每個成員都發(fā)送一個description消息)
- NSArray * array1 = [[NSArray alloc]initWithArray:array];//創(chuàng)建數(shù)組對象 相當于拷貝
- NSArray * arry2 = [NSArray arrayWithArray:array];//創(chuàng)建數(shù)組對象 相當于拷貝
- NSEnumerator * enumer = [array objectEnumerator];//正序枚舉器
- //創(chuàng)建一個枚舉器 把數(shù)組的每個元素的地址一次賦給枚舉器,然后建立起某種關聯(lián) (枚舉器只能用來讀數(shù)組成員)
- //枚舉時 會和數(shù)組創(chuàng)建某種關聯(lián)(修改監(jiān)視器/迭代器) 限制枚舉的同時不能修改元素 只能讀不能寫
- id obj;
- //***次循環(huán)把數(shù)組的***個元素賦給obj 第二次循環(huán)把第二個數(shù)組元素賦給obj
- while (obj = [enumer nextObject]) { //遍歷數(shù)組
- NSLog(@"%@",obj);
- }
- //快速枚舉 ***次循環(huán)把array的***個元素賦給ob 第二次循環(huán)把array的第二個元素賦給ob 直到nil(只能讀不能改)
- for(id ob in array){
- NSLog(@"%@",ob);
- }
- //逆序輸出數(shù)組(創(chuàng)建逆序枚舉器 ***次循環(huán)把***一個元素賦給obj )
- NSEnumerator * enumer1 = [array reverseObjectEnumerator];
- while (obj = [enumer1 nextObject]) {
- NSLog(@"%@",obj);
- }
- if ([obj isKindOfClass:[Dog class]]) //獲取類的類型 判是否是指定類的對象
- if ([obj isMemberOfClass:[Dog class]]) {
- }
2.不可變數(shù)組
- -------查找
- NSArray * array = [[NSArray alloc]initWithObjects:@"one",@"two",@"three",@"one", nil];
- NSUInteger index = [array indexOfObject:@"one123"];//返回***個找到的數(shù)組成員對應的下標 找不到返回NSNotFound
- index = [array indexOfObject:@"one" inRange:NSMakeRange(1, 3)];//在指定范圍內(nèi)查找
- if (index != NSNotFound) {
- NSLog(@"%ld",index);
- }
- ----抽取 組成新的數(shù)組
- NSArray * array1 = [array objectsAtIndexes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(1, 3)]];
- 《數(shù)字集合》
- NSIndexSet這是個數(shù)字集合類
- [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(1, 3)]產(chǎn)生一個數(shù)字集合
3.可變數(shù)
- NSMutableArray * array = [[NSMutableArray alloc]initWithObjects:@"one",@"two",@"three",@"four", nil];
- [array addObject:@"five"];//在數(shù)組尾部插入元素
- [array insertObject:@"six" atIndex:5];//在數(shù)組指定下標位置插入元素(不能越界,***值為length)
- [array removeObject:@"six"];//刪除指定元素(數(shù)組中出現(xiàn)的所有位置都將被刪除)
- [array removeObject:@"two" inRange:NSMakeRange(0, 3)];//從指定下標位置開始的指定長度內(nèi)刪除指定元素
- [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不可變數(shù)組
- NSMutableArray * array1 = [NSMutableArray arrayWithArray:array];//若修改,則將NSArray轉化為NSMutableArray
- NSArray * array2 = [ptr componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@", "]];//以字符串中的字符作為分割條件進行分割
- 《字符集合》
- NSCharacterSet 這是個字符集合類
- [NSCharacterSet characterSetWithCharactersInString:@", "]//把字符串轉化為字符集合
- -------拼接
- NSString * str = [array componentsJoinedByString:@" "];
- 若分割條件出現(xiàn)在開頭或者結尾,則會出現(xiàn)空串@"",如果不需要,則需要轉化成NSMutableString對空串進行處理
- func1: [array1 removeObject:@""]; //找到空串直接刪除
- func2: for(id obj in array1){
- if([obj length] == 0) //空串的長度為0
- if([obj isEqualToString:@""]) //與空串進行比較(字符串是不能進行==比較的,要使用函數(shù))
- }
責任編輯:閆佳明
來源:
oschina