Obj-C數組以及字符串拼接與分割
作者:佚名
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:@""]) //與空串進行比較(字符串是不能進行==比較的,要使用函數)
- }
責任編輯:閆佳明
來源:
oschina