zoukankan      html  css  js  c++  java
  • 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(@"字符串中含有非法字符");
    
                }
    
            }
    
    id 是通用 对象 指针
    内置类型要放到数组,需要封装
          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这个键那就是修改。没有就初始
  • 相关阅读:
    HTTP浅析
    PHP CURL获取cookies模拟登录
    C++ builder 通过WMI方式修改DNS
    C语言List使用样例
    C语言 获取系统临时目录并获取临时文件名
    C语言 写文件样例
    vb wmi 修改ip地址、网关、DNS
    正则表达式校验IP地址
    c语言 vector使用样例
    C++ builder 通过WMI查询网卡对应的序号
  • 原文地址:https://www.cnblogs.com/hezhuangzhuang/p/5112134.html
Copyright © 2011-2022 走看看