(学习笔记)NSMutableString和NSArray介绍和使用

NSMutabString

1、NSMutableString基本概念

NSMutableString是可变字符串,是NSString的子类。

2、字符串中的可变和不可变

NSMutableString和NSString的区别

  • NSString是不可变的,里面的文字内容是不能进行修改的。
  • NSMutableString是可变的,里面的文字内容可以随时更改。
  • NSMutableString能使用NSString的所有方法

3、NSMutableString的初始化

        (1).NSString的初始化方式都可以用在NSMulString

        NSMutableString *str = [NSMutableString stringWithFormat:@"%d",233];

        NSMutableString *str2 = [NSMutableString stringWithUTF8String:"2333"];

        (2).空字符的初始化

        NSString *str3 = @"123456789";

        (3).可变的空字符串

        NSMutableString *str4 = [NSMutableString string];

        (4).不可变字符串转可变

        NSMutableString *str5 = [NSMutableString stringWithString:str3];

        完全等同

        NSMutableString *str6 = [str3 mutableCopy];

4、NSMutableString常用方法(改变的是对象本身,返回的也是本身)

     (1)、拼接aString到最后面

- (void)appendString:(NSString *)aString;
NSMutableString *str = [NSMutableString string];
 for (int i = 0; i<10; i++) {
            [str appendString:[NSString stringWithFormat:@"%d",i]];
        }

     (2)、 拼接一段格式化字符串到最后面

- (void)appendFormat:(NSString *)format, ...;
        NSMutableString *str2 = [NSMutableString string];
        for (int i = 0; i < 10; i++) {
            [str2 appendFormat:@"%d",i];
        }
        

    (3)、删除range范围内的字符串

- (void)deleteCharactersInRange:(NSRange)range;
        [str2 deleteCharactersInRange:NSMakeRange(0, 5)];
        NSLog(@"str2 - dele - %@",str2);

     (4)、在loc这个位置中插入aString

- (void)insertString:(NSString *)aString atIndex:(NSUInteger)loc;
        /**
         *  1 - 要插入的字符串
            2 - 插入的位置
         */
        [str2 insertString:@"01234" atIndex:0];
        NSLog(@"str2 - insertString - %@",str2);

      (5)、使用aString替换range范围内的字符串

- (void)replaceCharactersInRange:(NSRange)range withString:(NSString *)aString;
        NSMutableString *str3 = [@"www.baidu.com" mutableCopy];
        [str3 replaceCharactersInRange:NSMakeRange(4, 5) withString:@"Yahoo!"];
        NSLog(@"str3 - %@",str3);

 

NSArray

1、NSArray的基本介绍

 

 

  • C语言中数组的弊端
    int array[4] = {10, 89, 27, 76};
    
    • 只能存放一种类型的数据
    • 不能很方便地动态添加数组元素
    • 不能很方便地动态删除数组元素
  • 什么是NSArray ?

    • NSArray是OC中的数组类,使用起来更灵活,开发中建议尽量使用NSArray替代C语言中的数组.

 

2、NSArray的初始化

 

 

        NSArray *arr1 = [NSArray arrayWithObject:@"1"];
        
        NSArray *arr2 = [NSArray arrayWithObjects:@"2",@"3",@"4",nil];
        
        //用数组生成另一个数组
        NSArray *arr3 = [NSArray arrayWithArray:arr2];
        
        //简便初始化
        NSArray *arr4 = @[
                          arr1,
                          arr2,
                          arr3
                          ];

        for (int i = 0; i < 3; i++) {
            
            NSLog(@"arr%d - %@",i,arr4[i]);
            
        }

 3、NSArray的使用注意事项

 

 

  • 1> 只能存放任意OC对象, 并且是有顺序的。
  • 2> 不能存储非OC对象,比如int\float\double\char\enum\struct等。
  • 3> 它是不可变的,一旦初始化完毕后,它里面的内容就永远是固定的, 不能删除里面的元素, 也不能再往里面添加元素
4、NSArray的常见用法
  • 1、【理解】NSArray的检索

    • 获取集合元素个数
      - (NSUInteger)count;
        NSArray *arr = @[@"1",@"1",@"1",@"1",@"1",@"1",@"1",@"1",@"1"];
              NSLog(@"arrr - count - %lu",(unsigned long)arr.count);
    • 获得index位置的元素
      - (id)objectAtIndex:(NSUInteger)index;
       NSLog(@"arr - 2 - %@",[arr objectAtIndex:2]);
    • 是否包含某一个元素
      - (BOOL)containsObject:(id)anObject;
      NSLog(@"arr- contain - %d",[arr containsObject:@"1"]);
    • 返回最后一个元素
      - (id)lastObject;
      
    • 返回最后一个元素
      - (id)firstObject;
      
    • 查找anObject元素在数组中的位置(如果找不到,返回-1)
      - (NSUInteger)indexOfObject:(id)anObject;
          NSLog(@"arr - indexOF1 - %lu",(unsigned long)[arr indexOfObject:@"1"]);
    • 在range范围内查找anObject元素在数组中的位置
      - (NSUInteger)indexOfObject:(id)anObject inRange:(NSRange)range;
      
  • 2、NSArray的简写形式

    • 自从2012年开始,Xcode的编译器多了很多自动生成代码的功能, 使得OC代码更加精简。

    • 1> 数组的创建

      • 之前
        [NSArray arrayWithObjects:@"Jack", @"Rose", @"Jim", nil];
        
      • 现在
        @[@"Jack", @"Rose", @"Jim"];
        
    • 2> 数组元素的访问

      • 之前
        [array objectAtIndex:0];
        
      • 现在
        array[0];
        
5、NSArray的遍历方法
  • 遍历, 就是将NSArray里面的所有元素一个一个取出来查看

  • 1、NSArray的普通遍历

    for (int i = 0; i<array.count; i++) {  }
    
  • 2、【理解】NSArray的快速遍历

    for (id obj in array) {  }
    
  • 3、NSArray使用block进行遍历

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

 

6、【理解】NSArray读写文件
  • 1、【理解】NSArray数据写入到文件中

    NSArray *array = @[@"a",@"b"];
    BOOL res = [array writeToFile:@"/Users/sleepingsun/Desktop/test.txt" atomically:YES];
    
    NSLog(@"%@",array);
    
  • 2、【理解】从文件中读取数据到NSArray中

    NSArray *array1 = [NSArray arrayWithContentsOfFile:@"/Users/sleepingsun/Desktop/test.txt"];
    
    NSLog(@"%@",array1);
7、NSArray与NSString相互转换
  • 1、字符串分割成一个数组方法

    // 这是NSString的方法
    // 将字符串用separator作为分隔符切割成数组元素
    - (NSArray *)componentsSeparatedByString:(NSString *)separator;
    NSString *str = @" 床前山月光 疑是地上霜 举头望明月 低头思故乡";
            NSArray *arr = [str componentsSeparatedByString:@" "];//根据“ ”(空格)来把一个字符串分割成数组
            NSLog(@"%@",arr[1]);
            for (NSString *temp in arr) {
                NSLog(@"temp - %@",temp);
            }

 

  • 2、把数组元素链接成字符串

    // 这是数组方法
    // 用separator作拼接符将数组元素拼接成一个字符串
    - (NSString *)componentsJoinedByString:(NSString *)separator;
            //Joined - 联合 加入
            NSString *str2 = [arr componentsJoinedByString:@","];将数组链接成一个字符串 并在每个对象插入“,”
            NSLog(@"str2 - %@",str2);

 

转载于:https://my.oschina.net/ykbaobao/blog/743838

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值