OC 中的NSArray NSString NSMutableArray

来源:互联网 发布:dr3插件mac安装 编辑:程序博客网 时间:2024/04/28 09:34
一、oc中的数组:NSArray
定义:
NSArray *arrayName=[NSArray arrayWithObjects:obj1,obj2,obj3,obj4,nil];//数组是以nil空作为结束的标志
使用:
for(int i=0;i<4;i++)
{
Object *obj=[arrayName objectAtIndex:i];
[obj  functionName];
}
例如:
//数组的使用
//定义四个Student类型的变量 并初始化
  
    Student *stu1=[StudentstudentWithName:@"唐僧"andSex:YESandAge:23andAddress:@"大唐"];
    Student *stu2=[StudentstudentWithName:@"悟空"andSex:YESandAge:23andAddress:@"花果山"];
    Student *stu3=[StudentstudentWithName:@"八戒"andSex:YESandAge:23andAddress:@"高老庄"];
    Student *stu4=[StudentstudentWithName:@"沙僧"andSex:YESandAge:23andAddress:@"流沙河"];
   //数组的定义和初始化(数组是以nil空作为结束的标志的)
    NSArray *students=[NSArrayarrayWithObjects:stu1,stu2,stu3,stu4,nil];//定义一个数组名为 students元素类型全部为Student 元素个数为4的数组
          //利用for循环使用数组中的元素
   for (int i=0; i<4; i++) {
       //根据数组的索引取出相应的对象
       Student *stu=[students objectAtIndex:i];
        //调用取出对象的sayHi方法
        [stusayHi];
    }
   //数组中的元素可以是多种类型
   //数组元素不能存放基本的数据类型(如int float..)
   //如果存放基本数据类型,要把它先转换成NSNumber的对象 例如:
    NSArray *arrays=[NSArrayarrayWithObjects:stu1,@"张三",[NSDate date], [NSNumbernumberWithInt:20],nil];//定义了一个名为array的数组,该数组中包含4个元素,分别为Student、String、Date、Number类型
   //注意:在打印引用型对象是,默认的是打印类的类型和内存地址,在.m文件中改写description方法(相当于java中的toString方法),可以改变其输出形式 在.m文件中改写后的description方法
          /**   在.m文件中重写后的description方法    [不用在.h文件中定义接口
]
     //重写description方法 相当于java中的toString方法
     -(NSString *)description//重写description方法后,让其输出姓名(也可以是其他自定义的字符串等)
     {
       returnname;
     }
         */
 
   //包含不同类型的数组的使用
   for (int i=0; i<4; i++) {
       //根据数组的索引取出相应的对象
        id  arry=[arraysobjectAtIndex:i];//id为泛型 是指任意类型的对象 定义id泛型对象时不在变量前加*
       //直到赋值的时候才确定是什么类型
       NSLog(@"%@",arry);
    }
    NSLog(@"for-in的使用");
   //for-in 的使用和java中的一样,循环的次数依赖与数组元素的个数
   for (id tempin arrays) {
       NSLog(@"%@",temp);
    }
    //NSArray的子类NSMutableArray为可变的数组  可以进行增删改查
//    NSMutableArray *mArray=[[NSMutableArray alloc]init];
    NSMutableArray *mArray=[NSMutableArrayarrayWithObjects:stu1,@"aaa",@"abc",nil];
//    //NSMutableArray是可变数组,是NSArray的子类,里面的元素可以增删改查
    NSLog(@"数组的长度%ld",[mArray count]);//输出数组的长度(元素的个数)调用count方法,采用长整型站位符
   //向数组中添加元素
    [mArrayaddObject:@"cccc"];
    [mArray addObject:[NSNumbernumberWithBool:YES]];
    NSLog(@"添加后的数组元素");
   NSLog(@"%@",mArray);
   //删除数组中的元素
    [mArray removeObjectAtIndex:0];//删除下标为0的元素即第一个元素
    NSLog(@"删除第一个元素后的数组元素");
   NSLog(@"%@",mArray);
//注:按住windows键和鼠标左键可以查看类的.h文件,以便于我们更加清楚的了解该类中的方法,更好的使用该类
    //NSMutableArray中的扩展方法
//    - (void)addObject:(id)anObject;
//    - (void)insertObject:(id)anObject atIndex:(NSUInteger)index;
//    - (void)removeLastObject;
//    - (void)removeObjectAtIndex:(NSUInteger)index;
//    - (void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject;
二、集合的使用
         集合中只能存放对象类的元素,要想存放基本数据类型的元素,要先将其转换为对象类再进行存放,集合中存放的数据元素可以是不同类型的和数组一样
Set集合
//Set集合
    //定义和初始化
   NSSet *set=[NSSetsetWithObjects:@"aa",@"bb",@"cc",nil];
   //set集合中的元素是无序的唯一存在的 相互独立的长度是不可变的
    //set集合的使用
   NSLog(@"%@",set);
   NSLog(@"%@",[setanyObject]);//取出set里面的所有元素
    //Set集合的子类NSMutableSet类似于Array的子类是可变长度的集合 也可以增加删除元素
   //按住windows键和鼠标左键可以查看其中定义的方法来进行使用
 
三、字符串
Cocoa为我们准备了一个与字符串操作相关的结构体NSRange
NSRange:
➢    表示相关事物的范围,包含两个成员,一个是长整型location,表示起始位置,另外一个是长整型length表示长度
                 比如要得到一个起始位置为10,3个长度的范围,它可以有三种方式创建:
➢ 第一种调用函数可以这么写:
  NSRange range =NSMakeRange (10,3);
➢ 第二种直接给成员赋值:
NSRange range;
        range.location=10;
        range.length=3;
➢ 第三种应用C语言的聚合结构赋值机制:
NSRange range ={10,3};
字符串的使用:(如下)
int main(int argc,const char * argv[])
{
   //一、字符串的创建
   //第一种直接创建
   NSString *str=@"zhangsan";
   //创建空的字符串
   NSString *str1=[[NSStringalloc]init];
    NSLog(@"str=%@,str1=%@",str,str1);
    //依赖创建 str2相当于是str的指针
    NSString *str2=[NSStringstringWithString:str];//str2依赖str,str释放后,str2变空
   NSLog(@"str2=%@",str2);
    //第四种重点 
   NSString *str3=[NSStringstringWithFormat:@"%@ love iPhone%d5.",str,5];
   NSLog(@"%@",str3);
    
   //二、字符串的长度
   NSLog(@"str3的长度是:%ld",[str3 length]);
    
   //三、字符串的比较
   NSString *str4=[NSStringstringWithFormat:@"zhangsan"];
   if(str==str4)//和java中一样,采用==来判断两个字符串是否相等时,判断的是地址是否相等,而不是内容是否相等
    {
       NSLog(@"== 相等");
    }
    if ([strisEqualToString:str4]) {//和java中的类似,判断两个字符串的内容是否相等,采用isEqualToString函数
        NSLog(@"isEqualToString 相等");
    }
   //四、字符串的大小比较
    //采用 compare方法,返回枚举类型[-1,0,1],NSOrderedAscending(1)升序,前者大于后者、NSOrderedSame(0)相等,前者等于后者、NSOrderedDescending(-1)前者小于后者
   //compare从第一个字母开始往后比较,比较的是字母的ASC码
   NSString *str5=@"abc";
   switch ([str4 compare:str5] ) {
        caseNSOrderedAscending:
           NSLog(@"大于");
           break;
        caseNSOrderedSame:
           NSLog(@"等于");
           break;
        caseNSOrderedDescending:
           NSLog(@"小于");
           break;
       default:
           break;
    }
    //五、前缀 后缀 的判断
    //后缀的判断用  hasSuffix函数返回bool类型
   NSString *str6=@"IOS.doc";
    if ([str6hasSuffix:@".doc"]) {//判断str6是否是以.doc结尾
        NSLog(@"这是一个word文档");
    }
    //前缀的判断用  hasPrefix函数返回bool类型
    NSString *str7=@"http://www.baidu.com";
    if ([str7hasPrefix:@"http://"]) {//判断str7是否以http://开头
       NSLog(@"这是一个网址");
    }
    //六、查找子字符串 rangeOfString函数
   //NSRange为一个结构体,在定义变量的时候不需要在变量前加*
   //NSRange包含两个成员:location和length;其中localtion表示字符串的位置(一般都是从0开始的),length表示字符串的长度表示一个字符串的范围
   NSRange range=[str7 rangeOfString:@"www"];//定义一个结构体变量,并为其赋初值
    if (range.location!=NSNotFound)//查找子字符串在父字符串中的位置range.location
    {
        NSLog(@"location:%ld,length:%ld",range.location,range.length);
    }else
    {
       NSLog(@"未找到字符串");
    }
   //七、截取子字符串
    NSLog(@"%@",[str7substringFromIndex:7]);//从位置为7的位置到最后(包含第七个位置)
    NSLog(@"%@",[str7substringToIndex:7]);//从开头到第七个位置(不包含第七个位置)
    NSLog(@"%@",[str7substringWithRange:range]);//从range范围截取字符串
   //八、字符串的转换
   NSString *str8=@"123";
    int num=[str8intValue];//将字符串str8转换成int基本类型
   NSLog(@"%d",num);
    NSLog(@"%@",[str7 uppercaseString]);//转换成大写
    NSLog(@"%@",[str7 lowercaseString]);//转换成小写
    NSLog(@"%@",[str7 capitalizedString]);//每句首字母大写
   //九、字符串的替换
    //1、stringByReplacingOccurrencesOfString方法(全部替换)
    NSString *str9=@"2B青年aa,2B青年dd,2B青年ff,2B青年xx";
    //将字符串str9中的“2B”替换成“文艺”
    NSLog(@"%@",[str9 stringByReplacingOccurrencesOfString:@"2B"withString:@"文艺"]);
    //2、stringByReplacingCharactersInRange方法(在一定范围内替换)
    NSLog(@"%@",[str9 stringByReplacingCharactersInRange:NSMakeRange(0,2) withString:@"文艺"]);//将0~2范围内的子字符串替换成目标字符串替换的长度可以不一样
   //十、字符串的切割 返回一个数组
    NSArray *arr=[str9 componentsSeparatedByString:@","];//以“,”为界进行字符串的切割,将切割后的字符串放进arr数组中
   NSLog(@"%@",arr);
   //十一、字符串的拼接拼接后的新字符并没有改变原字符串中的内容 而是生成了一个新的字符串
//    NSString *str8=@"123";
   //第一种、直接在原字符串后加新字符串进行拼接
    NSLog(@"%@",[str8stringByAppendingString:@"abc"]);
   //第二种、采用字符串格式符进行拼接
    NSLog(@"%@",[str8stringByAppendingFormat:@"iPhone%d5",5]);
  //十二、可变字符串  NSMutableString
    NSLog(@"可变字符串");
    // NSMutableString为NString的子类,继承NSString所有得方法
    NSMutableString *mstr=[[NSMutableString alloc]init];//定义一个空字符串
    NSLog(@"%@",mstr);//输出
    //1、拼接字符串  与NSString不同的是 NSMutableString拼接字符串是在原字符串的基础上拼接的,没有生成新的字符串,而是改变了原来字符串的样式  
    [mstr appendString:@"iphone5"];//普通拼接方式
     NSLog(@"%@",mstr);//输出
    [mstr appendFormat:@"ipad%d",4];//format拼接方式
    NSLog(@"%@",mstr);//输出
    //2、删除字符串中的字符 删除一个范围
    NSRange rang=[mstr rangeOfString:@"ipad"];//查找“ipad”所在的范围
    if(rang.location!=NSNotFound)
    {
        [mstr deleteCharactersInRange:rang];
    }
    else
    {
        NSLog(@"未找到字符串,删除失败。");
    }
    NSLog(@"%@",mstr);
 
 
   return 0;
}
四、课后练习
int main(int argc, const char * argv[])
{
    //第一题:将Hello World and Sunshine 子复查unzhong的“World”替换为“iBokan” 两种方式
    NSString *str=@"Hello World and Sunshine";
    NSLog(@"%@",str);
    NSLog(@"%@",[str stringByReplacingOccurrencesOfString:@"World" withString:@"iBokan"]);
    NSLog(@"%@",str);
    NSLog(@"%@",[str stringByReplacingCharactersInRange:NSMakeRange(6, 5) withString:@"iBokan"]);
    
    //第二题:求字符串“158”和“39”按十进制数值做差后的结构以字符串形式输出
    NSString *num1=@"158";
    NSString *num2=@"39";
    int n1=[num1 intValue];
    int n2=[num2 intValue];
    int result=n1-n2;
    NSString *jieguo=[NSString stringWithFormat:@"%d",result];
    NSLog(@"%@",jieguo);
    //第二题可以缩写为:
    NSLog(@"%d-%d=%@",158,39,[NSString stringWithFormat:@"%d",[@"158" intValue]-[@"39" intValue]]);
    return 0;
}
0 0
原创粉丝点击