OC-字符串.数组.字典.集合

简介: OC-字符串.数组.字典.集合

一.字符串

1.  查看类的基本信息
    /*
     * 一个类由.h和.m文件组成
     * .h: 声明他的属性与方法
     .m: 具体的实现
     * OC不开源:只能看到系统类的.h文件,不能看到系统类的.m文件
     * 进入类的.h文件能要能找到以下信息
     1. 类的父类
     2. 类遵循哪些协议
     3. 类所属框架
     4. 类里面的方法
     */
    /*
     * 字符串类
     * NSString:不可变字符串
     对象确定后,不能够修改字符串的内容,也就是说不能对字符串进行增删改查操作
     * NSMutableString:可变字符串
     对象确定后,能够修改字符串内容,能够对字符串进行增删改查操作
     */
2.  NSString不可变字符串
    创建一个字符创常量
    1.通过直接赋值,创建一个字符串常量
            NSString *str1 = @"字符串1";
            //通过初始化方法和便利构造方法创建一个空字符串对象
            NSString *str2 = [[NSString alloc]init];
            NSString *str3 = [NSString string];
            //给空字符串对象赋值
            str2 = @"字符串2";
            str3 = @"字符串3";
    2.快速创建一个字符串
            //通过带参数的init方法快速创建字符串
            NSString *string4 = [[NSString alloc]initWithString:@"字符串4"];
            //通过带参数的便利构造方法快速创建字符串
            NSString *string5 = [NSString stringWithString:@"字符串5"];
    3.创建一个格式化的字符串
            int a = 6;
            //通过带参数的便利构造方法创建格式化字符串,后面的格式,跟NSLog括号内的一样
            NSString *string6 = [NSString stringWithFormat:@"字符串%d",a];
            NSLog(@"字符串%d",a);
            //通过带参数的init初始化方法创建格式化字符串
            NSString *sting7 = [[NSString alloc]initWithFormat:@"字符串%d",a];
    4.字符串的比较
            NSString *string8 = @"ab";
            NSString *string9 = @"abc";
            /*
             * NSOrderedDescending: 代表string8>string9
             * NSOrderedSame: 相等
             * NSOrderedAscending:string8<sting9
             */
            //区分大小写的比较
            NSComparisonResult resutl = [string8 compare:string9];
            //不区分大小写的比较
            NSComparisonResult result1 = [string8 caseInsensitiveCompare:string9];
            //isEqualTostring比较字符串对象的内容是否相同,==比较两个字符对象的内存地址是否一样
           BOOL isEqual = [string8 isEqualToString:string9];
    5.字符串的转换
            NSString *string10 = @"aBcDeFg";
            //uppercaseString 将字母转化成大写
            NSString *upperTest = [string10 uppercaseString];
            //lowercaseString 将字母转化成小写
            NSString *lowerTest = [string10 lowercaseString];
            //capitalizedString 将首字母变成大写,后面变成小写
            NSString *capitalTest = [string10 capitalizedString];
    6.字符串的截取与拼接
            NSString *string11 = @"hello iOS";
            subtringToIndex表示从头截取到哪里
            NSString *subToString = [string11 substringToIndex:5];
            substringFromIndex表示从哪里开始截取到尾
            NSString *subFromString = [string11 substringFromIndex:6];
            NSRang规定一个返回,locationd代表从哪里开始截取,length代表截取多长
            NSRange rang = {1,1};
            substringWithRange表示按指定的范围截取
            NSString *subRangString = [string11 substringWithRange:rang];
            //通过length获取到字符串的长度
            long strLeng = string11.length;
            NSString *string12 = @"hello";
            stringByAppendingString拼接字符串
            NSString *appendString = [string12 stringByAppendingString:@"你好"];
            int b = 12;
            格式化拼接字符串
            NSString *formatAppendString = [string12 //stringByAppendingFormat:@"你好%d",b];
           字符串转数组
           NSString *string13 = @"刘伟改变世界的人,是真的";
           componentsSeparatedByString用特定字符分割字符串
           NSArray *arry = [string13 componentsSeparatedByString:@","];
3.  NSMutableString  可变字符串 
    1.可变字符串强烈不建议直接赋值
           NSMutableString *string14 = [NSMutableString 
           stringWithString:@"字符串14"];
           NSMutableString *string15 = [[NSMutableString alloc]initWithString:@"字符串15"];
    2.可变字符串的增->使原字符串改变
           //appendString是对自身进行修改,如果方法没有返回值一般都是对自身进行修改
           [string14 appendString:@"修改1"];
           //appendFormat对自身进行格式化拼接
           int c = 14;
           [string14 appendFormat:@" %d",c];
           //insertString:atIndex 在字符串的指定位置插入内容
           [string14 insertString:@"♦️" atIndex:3];
    3.可变字符串的删->删除原字符串的某些内容
            //deleteCharactersInRange删除原字符串中指定区域的字符
            NSRange rang1 = {5,2};
            [string14 deleteCharactersInRange:rang1];
    4.可变字符串的改->修改原字符串的内容
            NSRange rang2 = {7,4};
            [string14 replaceCharactersInRange:rang2 withString:@"成功"];
    5.可变字符串的查->查找原字符串中是否有指定的字符
           //containsString查找原字符串中是否有指定字符,并没有修改原字符
           BOOL isHeart = [string14 containsString:@"♦️"];

二.数组

1.NSArrary 不可变数组
    1.数组对象的创建
            //Foundation框架中提供了很多的集合类如:NSArray,NSMutableArray但是这些类只能存放OC对象类型的数据
            NSArray *array5 = @[@"",@"",@""];   // @"5"等价于@5
            NSArray *array1 = [NSArray arrayWithObject:@"one"];
            NSArray *array2 = [NSArray arrayWithObjects:@"one",@"two",@"three",nil];
            NSArray *array3 = [NSArray arrayWithArray:array1];
            NSLog(@"array1 : %@", array1);
            NSLog(@"array2 : %@", array2);
            NSLog(@"array3 : %@", array3);
            NSArray *array4 = [[NSArray alloc]initWithArray:array2];
            NSLog(@"array4 : %@",array4);
    2.获取数组中的元素个数以及访问数组元素
            NSArray *array5 = [[NSArray alloc]initWithObjects:@"一只羊",@"两只羊",@"三只羊",nil];
            long count = [array5 count];
            NSLog(@"array5中元素的个数 = %ld",count);
            NSString *string1 = [array5 objectAtIndex:0];
            NSString *string2 = array5[2];
            NSLog(@"array5中的第一个元素是\n%@",string1);
    3.追加数组中的内容
            NSArray *array6 = [NSArray arrayWithObjects:@"盖伦",@"寒冰",nil];
            NSArray *array7 = [array6 arrayByAddingObject:@"liulang"];
            //数组可以直接输出
            NSLog(@"array7 : %@",array7);
    4.数组转字符串
            NSArray *array8 = [NSArray arrayWithObjects:@"I",@"Love",@"You", nil];
            NSString *string9 = [array8 componentsJoinedByString:@"❤️"];
            NSLog(@"string9 : %@",string9);
    5.判断数组中是否存在一个指定的对象
            NSArray *array9 = [NSArray arrayWithObjects:@"爱美的人",@"爱吃的人",@"爱笑的人",@"爱唱歌的人",nil];
            BOOL isContain = [array9 containsObject:@"爱玩游戏的人"];
            NSLog(@"isContain :%d",isContain);
    6.根据指定的对象返回索引下标、返回数组中最后一个元素
            NSArray *array10 = [NSArray arrayWithObjects:@"mac",@"window",nil];
            //索引元素位置
            NSInteger index = [array10 indexOfObject:@"mac"];
            NSLog(@"index = %ld",index);
            //输出最后一个字符串
            NSString *lastObject = [array10 lastObject];
            NSLog(@"lastObject of lastObject = %@",lastObject);
    7.数组排序
            NSArray *sortArray = @[@"b",@"c",@"d",@"z",@"r"];
            //设置比较方法,升序
            NSArray *resultArray = [sortArray sortedArrayUsingSelector:@selector(compare:)];
            //能设置升序还是降序
            NSArray *resultArray1 = [sortArray sortedArrayUsingComparator:^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) 
            {
             return [obj1 compare:obj2];
             } ];
2. NSMutableArray(可变数组)       
    0.可变数组的赋值
             NSMutableArray *mutableArray1 = [NSMutableArray    arrayWithObjects:@"xiaohong",@"xiaoming",@"xiaohua",@"xiaoqiao",nil];
    1.新增
            [mutableArray1 addObject:@"xiaolan"];
            NSLog(@"新增后的结果 = %@",mutableArray1);
    2.插入
            [mutableArray1 insertObject:@"jiaodaozhuren" atIndex:1];
            NSLog(@"插入后的结果 = %@",mutableArray1);
    3.删除最后一个元素
            [mutableArray1 removeLastObject];
            NSLog(@"移除最后一位元素后的结果 = %@",mutableArray1);
    4.删除指定的元素        
            [mutableArray1 removeObject:@"xiaoming"];
            NSLog(@"删除指定元素后的结果 = %@",mutableArray1);
    5.删除指定位置的元素
            [mutableArray1 removeObjectAtIndex:1];
            NSLog(@"删除指定位置的元素后的结果 = %@",mutableArray1);
    6.批量删除
            NSArray *deleteArray = [NSArray arrayWithObjects:@"xiaohua", @"xiaoqiao", nil];
            [mutableArray1 removeObjectsInArray:deleteArray];
            NSLog(@"批量删除后的结果 =: %@", mutableArray1);
    6.替换元素
            [mutableArray1 replaceObjectAtIndex:0 withObject:@"It is over"];
            NSLog(@"replace: %@", mutableArray1);
    7.遍历数组
            [mutableArray1 addObjectsFromArray:deleteArray];
            for (int index = 0; index<3; index++) 
            { 
               NSLog(@"最终数组里第%d个元素是 : %@",index+1,mutableArray1[index]);
            }
    8.数组的遍历
            NSArray *greatPersonArray = @[@"霍金",@"爱因斯坦",@"居里夫人",@"牛顿",@"爱迪生",@""];
           //for(;;;)遍历数组
           for(int index = 0;index<greatPersonArray.count;index++)
           {            
             NSLog(@"第%d个伟人是%@",index+1,greatPersonArray[index]);
           }
          //for...in 快速遍历数组
          /*
          *  in左边: 放一个数组内容的引用,没有实例化的对象就叫做引用
          *  in右边: 放要遍历的数组
          *  核心: 从头遍历指定数组,将每次遍历到的值给in左边的对象
          *  当数组里面的元素被遍历完以后,for循环自动结束
          */
          for (NSString *str in greatPersonArray)
           {
             NSLog(@"快速遍历%@",str);
           }

三.字典

1.查看API找方法
    /*
     * 判断指定字符串是否在字符串的头部
     * 判断指定字符串是否在字符串的尾部
     * 将数字型字符串转化为基本数据类型
     */
    NSString *testStr = @"123456789";
    BOOL isPreFix = [testStr hasPrefix:@"12"];
    BOOL isSuffix = [testStr hasSuffix:@"89"];
    int testStrInt = [testStr intValue];
2.创建一个数组,里面存放NSNumber类型的数据,通过for..in遍历该数组
        //通过NSNumber封装基本数据类型
        NSNumber *num1 = [NSNumber numberWithInt:1];
        NSNumber *num2 = [NSNumber numberWithInt:2];
        NSArray *numberArray = @[num1,num2,@(3)];
        for (NSNumber *num in numberArray) 
        {    
        NSLog(@"%@",num);
        }
3.字典的基本知识
        /*
        * 字典通过key/Value来存取值,数组通过下标值来存取
        * 字典是无序的
        * key/value 是成对出现的
        * 格式:@{key:value,key:value}
        * 因为字典是通过key来存取值的,所以效率会比数组稍高
        * key和vlue,不一定非得是字符串,也可以是其他对象,但一般都使用字符串
        */
4.NSDictiondary不可变字典
    1.字典对象的创建
        //通过直接赋值
        NSDictionary *dict1 = @{@"name":@"花儿",@"age":@"18"};
        //alloc init
        NSDictionary *dict2 = [[NSDictionary alloc]init];
        //构造方法
        NSDictionary *dict3 = [NSDictionary dictionary];
        //初始化的时候给赋值,都用逗号分隔,key在后,值在前,系统会自动判断键值,给的参数要是双数
        NSDictionary *dict4 = [[NSDictionary alloc]initWithObjectsAndKeys:@"18",@"age",@"小薇",@"name", nil];
        //利用构造函数创建字典对象时给初始值
        NSDictionary *dict5 = [NSDictionary dictionaryWithObjectsAndKeys:@"1000",@"hurt", nil];
        //将一个字典放到另一个字典中
        NSDictionary *dict6 = [[NSDictionary alloc]initWithDictionary:dict5];
        //通过读取存放字典数据的文件,来创建字典
        NSDictionary *dict7 = [[NSDictionary alloc]initWithContentsOfFile:nil];
        //将url中存放的字典放到创建的字典对象中
        NSDictionary *dict8 = [[NSDictionary alloc]initWithContentsOfURL:nil];
    2.获取字典的值
        NSDictionary *dict9 = @{@"where":@"教室",@"what":@"上课",@"how":@"坐着"};
        dict9[@"what"];
        [dict9 objectForKey:@"how"];
        //通过方法count获取到字典中键值对的个数
        long num = [dict9 count];
    3.获取到字典所有的键和所有值
        //allkey获取到字典中所有的键
        NSArray *allkeysArray = [dict9 allKeys];
        //allvalue获取到字典中所有的值
        NSArray *allValueArray = [dict9 allValues];
        //通过遍历字典中的键,来遍历字典
        for (NSString *key in allkeysArray) 
        {            
           NSLog(@"%@",dict9[key]);
         }
        NSString *temp = allkeysArray[0];
        NSLog(@"%@",dict9[temp]);
        temp = allkeysArray[1];
        NSLog(@"%@",dict9[temp]);
        temp = allkeysArray[2];
        NSLog(@"%@",dict9[temp]);
    4.枚举器访问
        NSDictionary *dict10 = @{@"age":@"19",@"name":@"小花"};
        //keyEnumerator 来获取到字典中所有的键,将所有的键放到一个容器中 objectEnumerator获取到字典中所有的值
        NSEnumerator *result = [dict10 objectEnumerator];
        //通过for...in遍历这个容器
       for (NSString *key in result)
        {          
           NSLog(@"%@",key);
        }
        NSString *temp;
        //result 通过nextObject方法依次获取到容器中的结果,一旦nextObject返回的结果为nil,就跳出循环
        while (temp = [result nextObject])
         {          
            NSLog(@"高大上%@",temp);
         }
5.NSMutableDictionary 可变字典->工作中推荐直接使用这个   
    1. 给字典赋值简单方式 和 字典赋值复杂方式
        给字典赋值简单方式
        dict11[@"name"] = @"小伟";
        dict11[@"age"] = @"12";
        给字典赋值复杂方式
        [dict11 setValue:@"173" forKey:@"height"];
    2.创建指定元素个数的字典
        //创建指定元素个数的字典,但如果赋值要超过这个数的话,字典会自动扩充容量
        NSMutableDictionary *dict12 = [NSMutableDictionary dictionaryWithCapacity:1];
        dict12[@"key1"] = @"value1";
        dict12[@"key2"] = @"value2";
        //setDictionary 重新给该字典赋值
        [dict12 setDictionary:@{@"key3":@"value4"}];
    3.移除字典元素
        //removeAllObjects 全部移除
        [dict12 removeAllObjects];
        //通过指定key来移除指定的元素
        [dict12 removeObjectForKey:@"key3"];
        //批量移除
        [dict12 removeObjectsForKeys:@[@"key1",@"key2"]];

四.集合

1.集合的基本概念
        /*
        *  集合:存放数据的容器
        *  与数组的区别:
         1. 集合是无序的
         2. 集合不允许有重复的值
         3. 集合也只能存放对象
        */
2.NSSet 不可变集合
    1.集合的赋值和数组的转化
        //init 方法
        NSSet *set1 = [[NSSet alloc]init];
        //构造方法
        NSSet *set2 = [NSSet set];
        //创建对象并赋初值
        NSSet *set3 = [[NSSet alloc]initWithObjects:@1,@2,@3, nil];
        NSArray *array = @[@"齐白石",@"郑板桥",@"达芬奇"];
        //将数组转化集合
        NSSet *set4 = [NSSet setWithArray:array];
        //将一个元素放到新创建的集合中
        NSSet *set5 = [NSSet setWithObject:@5];
    2.通过枚举器访问集合元素
        //数组转化为集合
        NSArray *painterArray = @[@"唐伯虎",@"齐白石",@"梵高"];
        NSSet *paiinterSet = [NSSet setWithArray:painterArray];
        NSArray *shiRenArray = @[@"唐伯虎",@"李白",@"杜甫"];
        NSSet *shiRenSet = [NSSet setWithArray:shiRenArray];
        //for循环遍历集合
        for (NSString *temp in paiinterSet)
         {            
            NSLog(@"画家=%@",temp);           
         }
        //枚举器遍历集合
        NSEnumerator *result = [shiRenSet objectEnumerator];
        id temp;
        while (temp  = [result nextObject])
         {     
            NSLog(@"诗人=%@",temp);
         }
    3.判断两个集合是否有交集
        //判断是否有交集
        BOOL isIntersect = [paiinterSet intersectsSet:shiRenSet];
        //判断前者是否是后者的子集
        BOOL isSub = [paiinterSet isSubsetOfSet:shiRenSet];
3. NSMutableSet 可变集合
    1.创建指定元素个数的一个集合对象
        NSMutableSet *set4 = [NSMutableSet setWithCapacity:1];
    2.给集合添加单个元素
        [set4 addObject:@"朱元璋"];
    3.给集合批量添加元素
        [set4 addObjectsFromArray:painterArray];
    4.移除集合中的一个元素
        [set4 removeObject:@"朱元璋"];
    5.移除集合中的所有元素
        [set4 removeAllObjects];
        NSMutableSet *set8 = [NSMutableSet setWithObjects:@"1",@"2",@"3", nil];
        NSMutableSet *set9 = [NSMutableSet setWithObjects:@"2",@"3",@"4", nil];
    6.获取到两个集合的并集最后赋值给set8
        [set8 unionSet:set9];
    7.获取到两个集合的交集最后赋值给set8
        [set8 intersectSet:set9];
    8.从一个集合中减去另一个集合,就是从集合中移除这两个集合的交集,最终赋值给set8
        [set8 minusSet:set9];
    9. 给集合重新赋值
        [set8 setSet:set9];


目录
相关文章
|
弹性计算 JavaScript 算法
常见类型-3:数组元组的方法
本实验将介绍TypeScriptvs数组元组的方法
|
6月前
|
索引 Python 存储
Python 04 之变量【列表,元组,集合,字典,字符串】
Python 04 之变量【列表,元组,集合,字典,字符串】
96 0
Python 04 之变量【列表,元组,集合,字典,字符串】
列表 元组 字典 集合
列表 元组 字典 集合
数组与集合的转换
数组与集合的转换
57 0
|
6月前
|
存储 Scala
创建集合和数组
创建集合和数组
44 0
|
Python
python之集合的创建与使用,遍历,集合常见的操作函数,集合与列表,元组,字典的嵌套
python之集合的创建与使用,遍历,集合常见的操作函数,集合与列表,元组,字典的嵌套
从数组对象格式的数组中删除指定对象
从数组对象格式的数组中删除指定对象
36 0
元组和列表转换成字典
元组和列表转换成字典
60 0
字符串&列表&元组&字典之间互转
字符串&列表&元组&字典之间互转
|
存储 索引 Python
列表、字典、集合、元组
列表、字典、集合、元组
80 0
下一篇
无影云桌面