1、NSArray的所有方法
//OC的数组
//1、数组里面只能存对象
//2、同一个数组里面存的数据类型可以不同
//3、数组里面存的是对象指针的集合
//NSArray
//创建 alloc
//initWithObjects
NSArray *array = [[NSArray alloc] initWithObjects:@"123",@"456",@"789", nil];
//nil表示结束
//数组里面存对象时,要判断是否为nil,否则容易出现奇怪的问题
NSLog(@"%@",array);
//initWithArray 用一个数组来初始化另一个数组
NSArray *array1 = [[NSArray alloc] initWithArray:array];
NSLog(@"array is %@",array1);
//类方法
NSArray *array2 = [NSArray arrayWithObjects:@"123",@"456",@"789", nil];
NSArray *array3 = [NSArray arrayWithArray:array2];
//获取数组的元素
NSString *str1 = [array2 objectAtIndex:1];
NSLog(@"%@",str1);
//练习,从数组@[@"我是人",@"你也是",@"他不是"];中取出index等于2的对象,并打印
//练习 从数组@[@"我是人",@"你也是",@"他不是"];中取出index等于3的对象,并打印
//要注意越界的问题
//练习 从数组@[@"我是人",@"你也是",@"他不是"];中取出所有对象,并依次打印
NSArray *array8 = [NSArray arrayWithObjects:@"我是人",@"你也是",@"他不是", nil];
NSString *str5 = [array8 objectAtIndex:0];
NSString *str6 = [array8 objectAtIndex:1];
NSString *str7 = [array8 objectAtIndex:2];
NSLog(@"%@\n %@\n %@",str5,str6,str7);
for(int i = 0;i<3;i++)
{
NSLog(@"%@",[array8 objectAtIndex:i]);
}
//数组的长度
int arrCount = [array8 count];
NSLog(@"%d",arrCount);
for(int i =0;i<[array8 count];i++)
{
NSLog(@"%@",[array8 objectAtIndex:i]);
}
//练习,从@[@"1",@"2",@"3"]中取出所有对象,并打印。要求分别使用遍历和不遍历的方法写,遍历时候不许用.count和[下标]
//遍历@[@"i",@"k",@"f"];
//使用i<count
NSArray *arr1=[[NSArray alloc] initWithObjects:@"i",@"k",@"f", nil];
for(int i=0;i<[arr1 count];i++)
{
NSLog(@"%@",[arr1 objectAtIndex:i]);
}
//for in
for(NSString *temp in arr1)
{
NSLog(@"%@",temp);
}
//练习 使用for in 来遍历@[@"a",@"b",@"c"];
//分割字符串
NSString *s1 = @"i am a people";
NSArray *arr10 = [s1 componentsSeparatedByString:@" "];
NSLog(@"%@",arr10);
NSString *newStr = [NSString stringWithFormat:@"%@%@%@%@",[arr10 objectAtIndex:0],[arr10 objectAtIndex:1],[arr10 objectAtIndex:2],[arr10 objectAtIndex:3]];
NSLog(@"%@",newStr);
NSMutableString *s2 = [NSMutableString stringWithCapacity:0];
// for(NSString *temp in arr10)
// {
// [s2 appendString:temp];
// }
for(int i = 0;i<[arr10 count];i++)
{
[s2 appendString:[arr10 objectAtIndex:i]];
}
NSLog(@"%@",s2);
//练习 有电话号码 133-3333-3333,变成1333333333
//1(333·) 333 3333
//componentsSeparatedByString
//1(333·)3333333
//1333·)3333333
//1333·3333333
//13333333333
//同时切很多
NSString *tel = @"1(333·) 333 3333";
NSArray *telArr = [tel componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"(·) "]];//传入要切的字符集合
NSMutableString *s3 = [NSMutableString stringWithCapacity:0];
for(int i = 0;i<[telArr count];i++)
{
if([[telArr objectAtIndex:i] isEqualToString:@""] == NO)//因为用set方法切出来的数组里会有垃圾@""的存在,所以需要判断一下每一个索引的内容是否为垃圾@""
{
[s3 appendString:[telArr objectAtIndex:i]];
}
}
NSLog(@"%@",s3);
NSLog(@"%@",telArr);
//练习,<aaaa bbbb cccc dddd 1111>,截出来aaaabbbbccccdddd1111,提示笨办法,先切“ ”,再切(,再切)。简单的用set方法直接把@“”、(、)一起切了,要求打印切完的数组和切好的字符串
NSString *tokenStr = @"<aaaa bbbb cccc dddd 1111>";//创建字符串
NSArray *tokenArr = [tokenStr componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<> "]];//设置要切的字符集合,并切
NSMutableString *tokenSubedStr = [NSMutableString stringWithCapacity:0];//可变字符串
for(int i = 0;i<[tokenArr count];i++)//遍历
{
if([[tokenArr objectAtIndex:i]isEqualToString:@""] == NO)//判断是否垃圾
{
[tokenSubedStr appendString:[tokenArr objectAtIndex:i]];//拼截字符串
}
}
NSLog(@"%@",tokenArr);
NSLog(@"%@",tokenSubedStr);
//练习 把“2014年6月20日 12:12:22”,切成2014620121222
//1、声明字符串
NSString *timeStr = @"2014年6月20日 12:12:22";
//2、开切
NSArray *timeArr = [timeStr componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"年月日: "]];
//3、可变字符串创建
NSMutableString *subOverStr = [NSMutableString stringWithCapacity:0];
//4、遍历
for(int i =0;i<[timeArr count];i++)
{
//5、判断垃圾
if([[timeArr objectAtIndex:i] isEqualToString:@""] == NO)
{
//6、拼接
[subOverStr appendString:[timeArr objectAtIndex:i]];
}
}
//7、打印
NSLog(@"%@",timeArr);
NSLog(@"%@",subOverStr);
//练习 有一个网络返回值:“作者:罗宾汉.大卫”,需求是我们只显示姓:作者:大卫
NSString *author = @"作者:罗宾汉.大卫";
NSArray *cutArr = [author componentsSeparatedByString:@"."];
NSString *overStr = [NSString stringWithFormat:@"作者:%@",[cutArr objectAtIndex:[cutArr count]-1]];
NSLog(@"%@",overStr);
//练习 把@“作者:罗宾汉.大卫”的名截出来
NSString *name = @"作者:罗宾汉.大卫";
NSArray *arrTemp = [name componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@":."]];
NSMutableString *tempStr = [NSMutableString stringWithCapacity:0];
[tempStr appendString:[arrTemp objectAtIndex:1]];
2、NSMutableArray的所有方法
//可变数组 NSMutableArray
//创建方法
NSMutableArray *mutableArr = [NSMutableArray arrayWithCapacity:0];//类方法创建
NSLog(@"%@",mutableArr);
//增删改
//增,向数组里添加新的对象
//add增加,向数组的最后一位增加,依次
[mutableArr addObject:@"hello"];
NSLog(@"%@",mutableArr);
[mutableArr addObject:@"world"];
NSLog(@"%@",mutableArr);
//insert,向数组中某一位添加新对象
[mutableArr insertObject:@"my" atIndex:1];
NSLog(@"%@",mutableArr);
// //删
// //删除某一个索引的对象
// [mutableArr removeObjectAtIndex:1];//需要判断是否越界
//
// //删除最后一位
// [mutableArr removeLastObject];
//
// //一下删光,清空
// [mutableArr removeAllObjects];
// NSLog(@"%@",mutableArr);
//改
[mutableArr replaceObjectAtIndex:1 withObject:@"your"];
NSLog(@"%@",mutableArr);
//练习,有一个列表,列表里面有很多行,每行都显示一个人的名字,
//依次是@"A"、@"B", --------------add::结果::A,B
//然后又多了两个人名:@"C"、@"D",----------add::结果::A,B,C,D
//然后C不见了,--------remove index::结果::A,B,D
//然后A和B之间多了一个E, --------insert::结果::A,E,B,D
//再然后B改名了变成了F, --------replace::结果::A,E,F,D
//最后把数组清空 ---------removeall
//每完成一步都打印一下,看看结果
//练习,首先有一个可变数组,
//1、向里面添加两个字符串@“1”,@“2”,
//2、变成@“1”,@“4”,@“2”
//3、变成@“5”,@“4”,@“2”
//4、变成@“5”,@”4“
NSMutableArray *arrNum = [NSMutableArray arrayWithCapacity:0];
[arrNum addObject:@"1"];
[arrNum addObject:@"2"];
[arrNum insertObject:@"4" atIndex:1];
[arrNum replaceObjectAtIndex:0 withObject:@"5"];
[arrNum removeObjectAtIndex:2];
//[arrNum removeLastObject];
NSLog(@"%@",arrNum);
[arrNum addObject:@"1"];
[arrNum addObject:@"10"];
[arrNum addObject:@"6"];
//5,4,1,10,6
//交换位置
NSLog(@"%@",arrNum);
[arrNum exchangeObjectAtIndex:1 withObjectAtIndex:4];//把前后两个参数的index位置的对象交换
NSLog(@"%@",arrNum);
//排序
//冒泡
for(int i = 0;i<[arrNum count]-1;i++)
{
for(int j = 0;j<[arrNum count]-1-i;j++)
{
if([[arrNum objectAtIndex:j] compare:[arrNum objectAtIndex:j+1] options:NSCaseInsensitiveSearch]<0)
{
[arrNum exchangeObjectAtIndex:j withObjectAtIndex:j+1];
}
}
}
NSLog(@"%@",arrNum);
//现在有一个数组是
NSArray *arrhere = [NSArray arrayWithObjects:@"4",@"6",@"2",@"8",@"1", nil];
//要进行排序
//思路,把NSArray 变成NSMutableArray,当要对对象本身进行修改时,要把对象转为可变的类型
//创建一个Mutable的数组
NSMutableArray *mutableArrHere = [NSMutableArray arrayWithCapacity:0];
for(int i = 0;i<[arrhere count];i++)
{
[mutableArrHere addObject:[arrhere objectAtIndex:i]];
}
//然后对这个可变的数组进行排序
}