您的位置:首页 > 移动开发 > Objective-C

Object-C 数组以及字符串拼接与分割

2013-04-26 10:13 288 查看
1.OC的数组成员是任意的对象指针与C中的链表结构类似(以nil结尾)一切的数组操作不能越界

OC的数组分为不可变数组 NSArray可变数组 NSMutableArray

01
NSArray
* array = [[NSArray alloc]initWithObjects:@
"one"
,@
"two"
,@
"three"
,
nil];
02
NSLog(@
"%@"
,[array
objectAtIndex:0]);
//通过下标获取数组成员(下标从0开始)
03
NSLog(@
"%ld"
,[array
count]);
//获取数组有效成员个数
(不包括nil)
04
for
(i
= 0; i < [array count]; i++) {
//遍历数组(C方法)
05
NSLog(@
"%@"
,[array
objectAtIndex:i]);
06
}
07
NSLog(@
"%@"
,array);
//(OC)查看数组内容(先给array发送description消息,然后给每个成员都发送一个description消息)
08
NSArray
* array1 = [[NSArray alloc]initWithArray:array];
//创建数组对象
相当于拷贝
09
NSArray
* arry2 = [NSArray arrayWithArray:array];
//创建数组对象
相当于拷贝
10
NSEnumerator
* enumer = [array objectEnumerator];
//正序枚举器
11
//创建一个枚举器
把数组的每个元素的地址一次赋给枚举器,然后建立起某种关联 (枚举器只能用来读数组成员)
12
//枚举时
会和数组创建某种关联(修改监视器/迭代器) 限制枚举的同时不能修改元素 只能读不能写
13
id
obj;
14
//第一次循环把数组的第一个元素赋给obj
第二次循环把第二个数组元素赋给obj
15
while
(obj
= [enumer nextObject]) {
//遍历数组
16
NSLog(@
"%@"
,obj);
17
}
18
//快速枚举
第一次循环把array的第一个元素赋给ob  第二次循环把array的第二个元素赋给ob 直到nil(只能读不能改)
19
for
(id
ob in array){
20
NSLog(@
"%@"
,ob);
21
}
22
//逆序输出数组(创建逆序枚举器
第一次循环把最后一个元素赋给obj )
23
NSEnumerator
* enumer1 = [array reverseObjectEnumerator];
24
while
(obj
= [enumer1 nextObject]) {
25
NSLog(@
"%@"
,obj);
26
}
27
if
([obj
isKindOfClass:[Dog
class
]])
//获取类的类型
判是否是指定类的对象
28
if
([obj
isMemberOfClass:[Dog
class
]])
{
29
}
2.不可变数组

01
-------查找
02
03
NSArray
* array = [[NSArray alloc]initWithObjects:@
"one"
,@
"two"
,@
"three"
,@
"one"
,
nil];
04
05
NSUInteger
index = [array indexOfObject:@
"one123"
];
//返回第一个找到的数组成员对应的下标
找不到返回NSNotFound
06
07
index
= [array indexOfObject:@
"one"
inRange:NSMakeRange(1,
3)];
//在指定范围内查找
08
if
(index
!= NSNotFound) {
09
NSLog(@
"%ld"
,index);
10
}
11
----抽取
组成新的数组
12
NSArray
* array1 = [array objectsAtIndexes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(1, 3)]];
13
《数字集合》
14
NSIndexSet这是个数字集合类
15
[NSIndexSet
indexSetWithIndexesInRange:NSMakeRange(1, 3)]产生一个数字集合
3.可变数组

01
NSMutableArray
* array = [[NSMutableArray alloc]initWithObjects:@
"one"
,@
"two"
,@
"three"
,@
"four"
,
nil];
02
[array
addObject:@
"five"
];
//在数组尾部插入元素
03
[array
insertObject:@
"six"
atIndex:5];
//在数组指定下标位置插入元素(不能越界,最大值为length)
04
05
[array
removeObject:@
"six"
];
//删除指定元素(数组中出现的所有位置都将被删除)
06
[array
removeObject:@
"two"
inRange:NSMakeRange(0,
3)];
//从指定下标位置开始的指定长度内删除指定元素
07
[array
removeLastObject];
//删除最后一个元素
08
[array
removeAllObjects];
//删除所有元素
09
 
10
[array
replaceObjectAtIndex:3 withObject:@
"ios"
];
//将指定下标位置元素替换为指定的元素
11
[array
exchangeObjectAtIndex:0 withObjectAtIndex:3];
//将指定下标的两个元素进行交换
4.字符串分割与拼接

view
source

print?

01
//@""
空的字符串对象
02
-------分割
03
NSString
* ptr = @
"I
am a man"
;
04
NSArray
* array = [ptr componentsSeparatedByString:@
"
"
];
//将字符串整体作为分割条件
返回值为NSArray不可变数组
05
NSMutableArray
* array1 = [NSMutableArray arrayWithArray:array];
//若修改,则将NSArray转化为NSMutableArray
06
NSArray
* array2 = [ptr componentsSeparatedByCharactersInSet:[NSCharacterSetcharacterSetWithCharactersInString:@
",
"
]];
//以字符串中的字符作为分割条件进行分割
07
《字符集合》
08
NSCharacterSet
这是个字符集合类
09
[NSCharacterSet
characterSetWithCharactersInString:@
",
"
]
//把字符串转化为字符集合
10
-------拼接
11
NSString
* str = [array componentsJoinedByString:@
"
"
];
12
13
若分割条件出现在开头或者结尾,则会出现空串@
""
,如果不需要,则需要转化成NSMutableString对空串进行处理
14
func1:
[array1 removeObject:@
""
];
//找到空串直接删除
15
func2:
for
(id
obj in array1){
16
  
if
([obj
length] == 0)
//空串的长度为0
17
  
if
([obj
isEqualToString:@
""
])
//与空串进行比较(字符串是不能进行==比较的,要使用函数)  
18
   
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: