• oc常用字符串方法,数组方法,字典方法整理大全


    1.+(void)fun;

         类方法没有隐藏参数self所以 1类方法不能引用实例变量。2类方法不能调用对象的方法。

          类名直接调用类方法  [CFLCar  func];留下简单的对外接口

    1.NSString   一个字符根据编码占不同字节

        %@   是不可改变的字符串,每一个字符都不能改。只能查询。

         NSMutableString是NSString的子串,是可变字符串;

        (1)[str length] 字符串长度

                 [str characterAtlndex: i ]返回地 i 个字符;

        (2)创建  

                  NSString * p=@“dfsfa”; 

                  [NSString  stringWithString:@“%@ %@”,str,str2  ];  复制

                  NSString * str5 = [NSString stringWithUTF8String:str2];

                  NSString * str4 = [NSString stringWithString:str1];

             

             -(id)stringWithString; 

             -(id)stringWithFormat 

             -(id)stringWithUTF8String

    2.字符串比较

          //按字符串内容(逐个相比)比较大小

            if(str1&&[str1 compare:str2]==NSOrderedSame){

                NSLog(@"equal");

            }

            else if([str1 compare:str2]==NSOrderedDescending){

                NSLog(@"Descending");

            }

            else {

                NSLog(@"Ascending");

            }

            //比较相等

            if([str1 isEqualToString:str2]==YES){

                NSLog(@"相等");

            }

            //判断子串开头、结尾

            NSString *str6=@"13654125251";

            if([str6 hasPrefix:@“136"]==YES){ 

                NSLog(@"YES");

            }

             if ([str6 hasSuffix:@"251"]) {

                 NSLog(@“yes");

             }

    3.查找子字符串的位 置和范围

            NSString * str1 = @"床前明月光";

            NSRange range = [str1 rangeOfString:@"月"];

            if (range.location!=NSNotFound) {

                NSLog(@"%lu,%lu",range.location,(unsigned long)range.length);

            }

    4.子串提取

           NSString * str = @"Hello,world";

           NSString * str1 = [str substringToIndex:5];

           NSString * str2 = [str substringFromIndex:6];

           NSString * str3 = [str substringWithRange:NSMakeRange(0, 5)]; 

           NSLog(@"%@ %@ %@",str1,str2,str3);

    5.字符串转其他类型

            char name[20] = "Tom";

            

            //c strng to NSString

            NSString * str1 = [NSString stringWithFormat:@"%s",name];

            NSString* str2 = [NSString stringWithUTF8String:name];

            NSLog(@"%@ %@",str1,str2);

            

            //NSString to C string

            const char *str3 = [str1 UTF8String];

            NSLog(@"%s",str3);

            

            //NSString <==> number

            NSString * str4 = @"123";

            NSLog(@"%d  %g",[str4 intValue],[str4 doubleValue]);

            

            //大小写zhuanh

            NSString * str5 = @"dskdjJKLKLK";

            NSString * str6 = [str5 uppercaseString];

            NSLog(@"%@ %@",str6,[str5 lowercaseString]);

            

            //字符拼接

            NSLog(@"%@",[str5 stringByAppendingFormat:@"%@",str6]);

       

    6.可变字符串

       NSMutableString 继承自 NSString

       1.凡是NSString的方法,NSMutableString都能用

       2.凡是传参需要传入NSString * 传入NSMutableString *也行

       【专有方法】

       1.重置字符串内容

    [str setString:@"0123456789"];

       2.增 append  

    [str appendString:@"9876543210"];

    [str appendFormat:@"%d %c %.2f", 34, 'T', 2.34];

       3.插入

    [str insertString:@"ABC" atIndex:3];

       4.删 delete

    [str deleteCharactersInRange:range];

       5.改 replace

    [str replaceCharactersInRange:range withString:@“XXXXXXXXXXXXXXX”];(先找到range  用rangeofstring函数着字符串)

       6查 rangeOfString:

    7.字符串去除两端内容

            NSString * str4 = @"kkd123ld";

            

            //stringByTrimmingCharactersInSet去除字符串两端指定字符集内的字符

            //去掉首尾两端的空格

            NSString* str5 = [str4 stringByTrimmingCharactersInSet:[NSCharacterSet letterCharacterSet]];

            NSLog(@"%@  %@",str4,str5);

            

            NSString * str6 = @",md123./";

            NSCharacterSet * mySet = [NSCharacterSet  characterSetWithCharactersInString:@",md./"];

            NSString * str7 = [str6 stringByTrimmingCharactersInSet:mySet];

            NSLog(@"%@",str7);

    删除字符串;=剩余元素以;=为分割的对象保存到数组

    NSArray *array=[str2 componentsSeparatedByCharactersInSet:

                                          [NSCharacterSet  characterSetWithCharactersInString:@"; =“]];

    8.将文件已字符串形式读入

    NSString *p=[NSString stringWithContentsOfFile:@"/Users/qianfeng/Desktop/未命名.rtf" 

                                                                          encoding:NSUTF8StringEncoding error:nil];

                                                                      (路径、编码方式、nil)

    9.判断字符串中是否含有 某种类型的 元素

    NSString *testString = @"春1mianBU觉晓";

            int alength = [testString length];

            for (int i = 0; i<alength; i++) {

                char commitChar = [testString characterAtIndex:i];

                NSString *temp = [testString substringWithRange:NSMakeRange(i,1)];

                const char *u8Temp = [temp UTF8String];

                if (3==strlen(u8Temp)){

                    NSLog(@"字符串中含有中文");

                }else if((commitChar>64)&&(commitChar<91)){

                    NSLog(@"字符串中含有大写英文字母");

                }else if((commitChar>96)&&(commitChar<123)){

                    NSLog(@"字符串中含有小写英文字母");

                }else if((commitChar>47)&&(commitChar<58)){

                    NSLog(@"字符串中含有数字");

                }else{

                    NSLog(@"字符串中含有非法字符");

                }

            }

    1. id 是通用 对象 指针
    2. 内置类型要放到数组,需要封装

          int a=10;

          NSNumber *numA=[NSNumber numberWithInt:a];(封装对象)numA是对象

          int b = [numA intValue];(解封装)

    3.NSArray数组元素类型是id,是对象的地址。可以储存不同类型的对象

       是不可变数组  NSMutableArray是可变数组

    1.初始化 

      NSArray * a=[NSArray arrayWithObjects:@"1",@"2", nil];

      NSArray *c=@[@“1”,@"2"]; NSArray *c=@[str1,str2];

    2.遍历

    (1)循环

           NSInteger len=[c count];  元素个数

           id p = [c  objectAtIndex: i ];得到制定下标的数组元素(对象地址)

    (2)快速枚举  

             只能访问oc对象集合

             for (id p in c) {

                  NSLog(@“%@“,p); (从头开始逐一给p直到c为nil。p最后为nil)

             }

             注意一个问题。在枚举期间不能修改集合 

    (3)枚举器

            NSEnumerator * enumer=[c  objectEnumerator];

            id p;

            while(p = [enumer  nextObject]){

                   NSLog(@“%@”,p);

            }

    //创建一个逆序枚举器NSEnumerator * enume2 = [array reverseObjectEnumerator]; while (obj = [enume2 nextObject]) { 

    NSLog(@"obj = %@",obj); } 

        (1)(3)可增删数组元素  (2)速度较快

    3.判定数组是否包含某个元素

       BOOL is=[a containsObject:@“man”];

        if (is){

              NSLog(@“YES”);

         }  

    4.得到数组第一个对象,最后一个对象(last) 

       NSLog(@"%@",[c firstObject]);

    5.数组查找 

       NSLog(@"%lu",[c indexOfObject:@“2"]);  内容比较 返回下标

       NSLog(@"%lu",[c indexOfObjectIdenticalTo:@“2"]) 地址查找

    6.数组排序  前两种方法

    sortedArrayUsingFunction:中函数必须自己写

    NSArray *sortedArray = [array sortedArrayUsingFunction:compare context:nil];

    //先比较姓 在比较名字        

    -(NSComparisonResult)compareLastName:(student*)stu{

          NSComparisonResult   result = [self.lastname  compare  stu.lastname];   

          if(result==NSOrderedSame){

                  result=[self.firstname  compare:stu.firstname];

          }

          return  result;

    }

    //输出用description重写

    -(NSString* )description {

      return   [NSString stringWithFormat:@“%@%@“,self.lastname,self.firstname];

    }

     使用selector排序  (排序后产生新数组的不变的数组,原来数组不变,所以要用新的数组接收这个返回值);

     sortedArrayUsingSelector 数组元素是foundation类的对象,不需要写比较方法,调用响应的类的比 较方法就可以

     如果数组元素是自定义类的对象,在你的类里必须自己写一个比较函数

     NSArray * array 2= [array sortedArrayUsingSelector:@selector(compare:)];调用compare方法进行排序默认从小到大

     NSLog(@"%@",sortedArray);

    6.可变数组

       NSMutableString *array=[[NSMutableArray alloc] init];

    //增  追加

    [array addObject:@"Four"];

    //插入

    [array insertObject:@"Four" atIndex:1];

    //删

    [array removeAllObjects];

    [array removeLastObject];

    //删除指定索引处元素

    [array removeObjectAtIndex:1];

    //传入地址,删除指定元素,如果传入的是字符串,删除所有和字符串相等的元素。

    [array removeObject:@"One"];

    //改

    //用某个对象,替换当前某索引处的元素

    [array replaceObjectAtIndex:0 withObject:@"Five"];

    //交换两个元素的位置

    [array exchangeObjectAtIndex:0 withObjectAtIndex:2];

    /*—————————————数组元素拼接成字符串

    把数组元素拼接 成字符

    NSString * ptr = [array componentsJoinedByString:@“###"];

    删除字符串;=剩余元素以;=为分割的对象保存到数组

    NSArray *array=[str2  componentsSeparatedByCharactersInSet:

                                [NSCharacterSet  characterSetWithCharactersInString:@"; ="]];

    NSDictionary 字典

    NSMutableDictionary可变字典

    字典时无序的,对字典排序,应先生称数组,对数组排序

    字典对象是由 键—值对象构成的数据集合;同一字典,键必须唯一。 键值对是无序的

    1.创 建

     NSDictionary *dict1=[NSDictionary dictionaryWithObjectsAndKeys:s1,@“o1”,@“k1”,@“o2”,@“k2” 

             nil];//值 键

     NSDictionary *dict2=@{@“101":s1,@"102":s2,@"103":s3,@"104":s4};//键 值

    2.存   取

    NSLog(@"%@",[dict2 objectForKey:@“101"]); 得到@“101”所对应的值

    NSLog(@"%@", dict2[@“102”]);得到键所对应的值

    NSArray *key =[dict2 allKeys]; 得到所有的键

    NSLog(@"%@",key);

    NSArray *valuis=[dict2 allValues]; 得到所有的键值

    NSLog(@“%@",valuis);

    3.遍  历

    //根据键的数组遍历值(优先选择)

            for (NSString * key in dict2) {

                NSLog(@"%@ %@",key,dict2[key]);

            }

     //枚举器

            NSEnumerator *keyEnumerator =[dict2 keyEnumerator];

            NSEnumerator *key;

            while(key=[keyEnumerator nextObject]){

                 NSLog(@"%@ %@",key ,dict2[key]);

            }

    4.排 序

           NSArray *result= [dict2 keysSortedByValueUsingSelector:@selector(compare:)];

                                                                                               ( 根据值的内容重写compare)

           NSLog(@"%@",result);

          //对值的内容排序,自定义compare函数

    5.可变字典

        1.创建

              NSMutableDictionary *dict2=[NSMutableDictionary dictionaryWithCapacity:0]//有0个键值对的可变字典

              NSMutableDictionary *dict =[[NSMutableDictionary alloc]init];

              //不能用  NSMutableDictionary *dict=@{@“101":@"tom",@"102":@"jerry"}

        2.赋值

              [dict2 setDictionary:@{@"101":@"tom",@"102":@"jerry"}];

              [dict2 setObject:@"zhabg" forKey:@"103"];// 如果有103这个键那就是修改。没有就初始

  • 相关阅读:
    关于selenium中的三种等待方式与EC模块的知识
    re.findall用法
    链表及链表的逆置
    通过两个队列实现一个栈
    flask与Django框架的区别
    http协议与https协议
    Maven系列教材 (四)- 通过命令行创建Maven风格的Java项目
    Maven系列教材 (三)- 仓库概念,下载与配置
    Maven系列教材 (二)- 下载与配置Maven
    Maven系列教材 (一)- 什么是Maven
  • 原文地址:https://www.cnblogs.com/cfl911014/p/4751957.html
Copyright © 2020-2023  润新知