码迷,mamicode.com
首页 > 编程语言 > 详细

黑马程序员-OC加强学习日记-Foundation框架中的字符串和数组

时间:2015-12-19 08:45:07      阅读:257      评论:0      收藏:0      [点我收藏+]

标签:

 ------- ios培训、 android培训、java培训、期待与您交流! ----------

一.Foundation框架

1.概念:框架是由许多类、方法、函数、文档按照一定的逻辑组织起来的集合,以便使研发程序变得更容易。

            为所有程序开发奠定基础的框架称为Foundation框架

2.使用:要想使用Foundation框架中的功能,包含它的主文件即可

          #import <Foundation/Foundation.h>

 

二.NSString

  不可变字符串类   一个NSString对象就代表一个字符串

  通过方法产生的字符串都是新的字符串,不会改变原来的字符串

(一)创建字符串

 1.字面量方式  (常量字符串,存储在常量区)

     NSString * str = @"kobe";

 2.类方法创建 

     NSString * str = [NSString stringWithFormat:@"int = %d",@"hello",10];

 3.对象方法创建

     NSString * str = [[NSString alloc] initWithFormat:@"%@",@"heima"];

 

(二)字符串的获取 (关键单词 substring

 1.获取字符串长度

     NSString * str = @"Messi";

     long len = str.length;

 2.获取子串

   (1)从哪个索引开始截取字符直到结尾(包含索引上的字符)

        NSString * str = @"www.cctv.com";

        NSString * str1 = [str substingFormIndex:4];//  cctv.com

   (2)从字符串开头截取到索引位置(不包含索引位置的字符)

        NSString * str = @"www.cctv.com";

        NSString * str1 = [str substingToIndex:3]; // www

   (3)从哪个位置开始截取,截取长度是多长 range.location  range.length

        NSString * str = @"www.cctv.com";

        NSRange range = {4,4};

        NSString * str1 = [str substingWithRange:range];// cctv

   (4)获取字符串区间

        NSString * str = @"www.cctv.com";

        NSRange range = [str rangeOfString:@"com"];

        // 判断有没有这个子串

        if(range.length==0){

            NSLog(@"没有这个子串")

        }

        NSLog(@"%@",NSStringFromRange(range));

   (5)获取字符串索引上的字符

        NSString * str = @"www.cctv.com";

        unichar  c = [str characterAtIndex:7]; // v

 

(三) 字符串的判断与比较 (关键单词:isEqual  compare )

 1.判断地址是否相同: str1==str2

 2.判断内容是否相同:[str1 isEqualToString:str2];

 3.字符串比较大小

 compare方法比较的是内容,从前到后一个一个的比较,返回值有3个 

  NSOrderedAscending,NSOrderedSame,NSOrderedDescending, 

               str > str2  NSOrderedDescending 

               str < str2  NSOrderedAscending 

           str == str2 NSOrderedSame 

 

代码演示:

 1  #import <Foundation/Foundation.h>
 2 
 3  int main(int argc ,const char argv[]){
 4 
 5         NSString * str1 = @"abc";
 6 
 7         NSString * str2 = @"abc";
 8 
 9         NSComparisonResult  rs = [str1 compare:str2];
10 
11          if(rs==NSOrderedSame){
12 
13              NSLog(@"str1== str2");
14 
15          } else if(rs==NSOrderedAscending){
16 
17              NSLog(@"str1<str2");
18 
19          }else if(rs==NSOrderedDescending){
20 
21              NSLog(@"str1>str2");
22 
23          }
24 
25       return 0;
26 
27      }

 

 // 比较的时候字符串不区分大小写

compare:(NSString *) options: NSCaseInsensitiveSearch 

 // 用于比较字符串中字符个数

compare:(NSString *) options: NSNumericSearch 

 

(四)字符串转换 (关键单词:uppercase lowercase capitalized

  1.转大写 :[str uppercaseString];

  2.转小写:[str lowercaseString];

  3.单词首字母大写:[str capitalizedString];

  4.基本数据类型转字符串

      NSString intStr = [NSString stringWithFormat:@"%d",10];

  5.字符串转基本数据类型

     int a = intStr.intValue;

     double b = intStr.doubleValue;

  6.C字符串转OC字符串 (withCString

   NSString * str = [NSString stringWithCString:"haha" encoding:NSUTF8StringEncoding];

  7.OC字符串转C字符串

     char * c = [str cStringUsingEncoding:NSUTF8StringEncoding];

 

(字符串替换 (关键单词:stringBy

1.在原有字符串的末尾拼接一个字符串

   [str stringByAppendingString:@"haha"];

2.字符替换

        //  用 替换 *

      [str stringByReplacingOccurrencesString:"*"withString:@"-"];

3.使用字符串替换原来字符串中的某个区间

        NSString * str = @"www.cctv.com";

        NSRange range = [str rangeOfString:@"cctv"];

        // sina替换掉cctv所在的区间

        [str stringByReplacingCharactersInRange:range withString:@"sina"];

4.删除原字符串中所有指定的字符

      // 用空字符"" 替换 意味着删除

 [str stringByReplacingOccurrencesString:"*"withString:@""];

5.去掉字符串两头的空格(重点掌握)

     [str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; 

      

(六)字符串与文件(关键单词:writeToFile

1.把字符串写入文件

       NSString * str = @"今天雾霾好大"; 

       NSString * path = @"/Users/apple/Desktop/test.txt";

  BOOL isSuccess = [str1 writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:nil];

     if(isSuccess){

        NSLog(@"写入成功");   

      } 

 2.读取文件

 NSString * str =[NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];

 

(七) 字符串与URL

   1.URL :统一资源定位符

     格式:协议头://主机域名[IP,服务器]/路径

   2.举例:http://ios.itcast.cn/ios/images/content_25.jpg  

           file:///Users/apple/Desktop/test.txt

      由于file就是在本机中查找,所以没有主机名称

  3.创建URL

   (1)传入完整的字符串创建

    NSURL *url = [NSURL URLWithString:@"file:///Users/apple/Desktop/test.txt"];

   (2)通过文件路径创建(路径中不要出现中文)

    NSURL *url = [NSURL fileURLWithPath:@"/Users/apple/Desktop/test.txt"]; 

  4.把字符串写入URL

   BOOL isSuccess = [str writeToURL:url atomically:YES encoding:NSUTF8StringEncoding error:nil];

  5.读取URL

  NSString * str =[NSString stringWithContentsOfFile:url encoding:NSUTF8StringEncoding error:nil];

 

三.NSMutableString (关键单词:append inset

   可变字符串,是NSString的子类。对原有字符串可以进行增改删操作

1.使用场景:字符串里的内容需要经常修改,那么就使用NSMutableString创建字符串

2.创建字符串

  (1)创建了一个空的可变字符串,里面容量小。放入字符串存储空间以二进制递增,效率低

  NSMutableString * str = [NSMutableString string];

 (2)通过容量(capacity)创建,可变字符一创建就有多大的容量,超过容量再去扩展,效率高

  NSMutableString * str = [NSMutableString stringWithCapacity:200];

3.往字符串中增加内容

     [str appendString:@"haha"];

4.在某个位置插入字符

  // 在索引为3的位置插入*

     [str insetSring:@"*" atIndex:3];

5.赋值

  // 可变字符串不能使用字面量的方式进行赋值。如果赋值可以使用点语法

   str.string = @"abc"

 

代码演示:

 

 1 //  把20个 "lol" 拼接起来使用空格隔开
 2 
 3  #import <Foundation/Foundation.h>
 4 
 5   int main(int argc ,const char argv[]){
 6 
 7       // 定义一个可变字符串
 8 
 9       NSMutableString * str = [NSMutableString stringWithCapacity:100];
10 
11       // 添加字符串
12 
13       for(int i=0;i<20;i++){
14 
15            [str appendString:@" lol"];
16 
17         }
18 
19       // 去掉字符串首位的空格
20 
21       NSRange range = {0,1};
22 
23         [str deleteCharactersInRange:range];
24 
25    return 026 
27  }

 

四.数组

 1.概念:有序的对象集合,可以存放任意的OC对象

 2.特点1)同一数组中可以存放不同类型的对象

        (2)同一个对象可以被存入数组多次

        (3)不能存放基本数据类型,基本数据类型需要转换成其包装类型

        (4)元素是有序的

        (5)通常把一种类型的对象放入数组中,方便批量操作

 

五.NSArray

 1.概念:不可变数组,一旦创建就不能增加,修改,删除其中的元素

 2.创建

  (1)简洁的构造方法

NSArray * array = [NSArray arrayWithObjects:@"a",@"b",@"c",nil];

 // nil 表示数组结束了。不要在数组中间加入nil

  (2)通过对象方法

NSArray * array = [NSArray alloc] initWithObjects:dog,dog1,nil];

  (3)字面量(最常用)

NSArray * array = @[iphone,ipad];

3.获取元素

  (1)通过对象方法

  NSArray * array = @[iphone,ipad];

 // 访问第2个元素ipad

  CZIpad * ipad = [array objectAtIndex:1];

  (2)快捷方式

     iPad = array[1];

4.获取数组长度

     long len = array.count;

5.判断数组中是否包含某个元素(contain

     BOOL isContain = [array containObject:dog];

6.数组遍历

     NSArray * array =@[@"a",@"b",@"c",@"d"];

(1)普通遍历

     for(int i=0;i<array.count;i++){

        NSLog(@"%@",array[i]);

      }

(2)快速遍历

     for(NSString * str in array){

        NSLog(@"%@",str);

     }

(3)使用block遍历

     //BOOL *stop 如果赋值为YES则停止循环

      [array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx,BOOL *stop){

      NSLog(@"下标:%lu :%@",idx,obj); 

      }];

      *stop = YES;

7.数组元素排序

      [array sortedArrayUsingComparator:^NSComparisonResult(CZDog * obj1,CZDog * obj2){

       if(obj1.age==obj2.age){

        return [obj1.name compare: obj2.name];

       } else if(obj1.age>obj2.age){

        return NSOrderedDescending; // 降序

       } else {

        return NSOrderedAscending; // 升序

       }

  }];

8.字符串与数组的转换

  (1)使用字符串分割原来的字符串成一个数组

      NSString * str = @"1 2 3 4 5 6";

      NSArray * arr = [str componentsSeparatedString:@","];

  (2)把数组组装成字符串

      NSString * str 1= [arr componentsJoinedByString:@"," ];

9.数组与文件 (writeToFile

  (1)写入文件

      NSArray * array =@[@"a",@"b",@"c",@"d"];

      NSString * path = @"/Users/apple/Desktop/test.plist";

     BOOL isSuccess = [array writeToFile:path atomically:YES];

     if(isSuccess){

        NSLog(@"写入成功");   

      }

 (2)读取文件

    array=[NSArray arrayWithContentsOfFile:path];

 

六.NSMutableArray

1.概念:可变数组,继承NSArray,支持插入,删除,修改的操作

2.创建

 (1)创建一个空的可变数组

       NSMutableArray * arrM = [NSMutableArray array];

(2)创建可容纳10个元素的可变数组

       NSMutableArray * arrM = [NSMutableArray arrayWithCapacity:10];

3.添加元素

  (1)不能通过字面量添加

   (2)[arrM addObject:@"a"];

   (3) 通过一个不可变数组去设置一个可变数组

       arrM.array = @[@"1",@"2"];

4.在某个索引插入一个元素

    // 在索引为1的位置插入元素"a"

     [arrM insetObject:@"a" atIndex:1];

5.删除元素

   //通过isEqual方法比较,只要与a相同就删除

     [arrM removeObject:@"a"];

 

黑马程序员-OC加强学习日记-Foundation框架中的字符串和数组

标签:

原文地址:http://www.cnblogs.com/ly0709/p/5058603.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!