zoukankan      html  css  js  c++  java
  • 2015.12.23 OC中的字符串(NSString&NSMutableString) 数组(NSArray&NSMutableArray)

    字符串(NSString&NSMutableString) 

      在OC中的字符串可分为两种:不可变字符串(NSString)和不可变字符串(NSMutableString)。从字面上就可以理解这两种字符串的区别。

    ▲不可变字符串(NSString)

      1.创建

        ①静态

         NSString *str = @"Hello World!";

        ②用alloc创建空字符串对象 (对象方法『-』)

         NSString *str = [[[NSString alloc] init] autorelease];

        ③用alloc创建有初始值的字符串对象 (对象方法『-』)

         NSString *str = [[[NSString alloc] initWithString: @"Hello World!"] autorelease];

        ④不需要自己控制内存(工厂方法、便利器方法) (类方法『+』)

         NSString *str = [NSString stringWithString:@"Hello World!"];

        ⑤字符串按一定格式『拼接』,这个的用法很像『NSLog』.

         int age = 20, height = 170;

         NSString *str = [NSString stringWithFormat:@"age=%d height=%d", age, height];

      2.获取字符串长度 length

        NSUInteger length = str.length;(NSUInteger length = strlen(str);

      3.获取子字符串

        ①substringFromIndex;  从哪个索引值开始获取

        ②substringToIndex;    一直获取到哪个索引值

        ③substringWithRange;  从哪个索引值开始获取多长的字符串

          typedef struct _NSRange {

               NSUInteger location;

               NSUInteger length;

          } NSRange;

          因为NSRange是一个结构体,所以在定义这个类型变量的时候不用指针(*)

          eg:NSRange range = NSMakeRange(4, 8);

      4.字符串的比较

        ①isEqualToString:

        ②compare:

        typedef enum{

          NSOrderedAscending = -1,    『上升』前者比后者小

          NSOrderedSame,

          NSOrderedDescending        『下降』前者比后者大

        }NSComparisonResult;

      5.查找字符串

        ①hasPrefix:      在第一个查找

        ②hasSuffix:      在最后一个查找

        ③rangeOfString:     在中间查找

      6.字符串转化为相应的数据类型

        ①intValue      转化为整型,这里需要注意的是,转化的字符串只能为整型。如果在整型前面有字符串,则转化完的值为0;转化的值后面(空格隔开)则不进行转化。

        ②floatValue

        ③doubleValue

        ④boolValue

          eg:NSString *numStr = @"12.3";

             int num = [numStr intValue];

     

     

    ▲可变字符串(NSMutableString)

      @interface NSMutableString : NSString{    (说明NSMutableString是继承NSString的)

      }

      1.创建可变字符串

        NSMutableString *mStr = [NSMutableString stringWithCapacity:0];    暂时分配0个空间,当空间不够是自动追加

        NSMutableString *mStr = [[NSSMutableString alloc] initWithCapacity:0];

      2.追加字符串

        [mStr appendString:@"追加内容"];

        [mStr appendString:@"我要追加%d个内容", num];

      3.插入字符串

        [mStr insertString:@"1", atIndex:2];

        [mStr insertString:@"1", atIndex:mStr.length];    在mStr末尾插入 

      4.字符串的替换

        NSRange range = [mStr rangOfString:@"需要被替换的内容"];

        [mStr replaceCharactersInRange:range withString:@"需要替换的内容"];    这里的range和上面是一样的

      5.删除一个字符串

        [mStr deleteCharactersInRange:range];

      6.重新设置字符串的内容

        [mStr setString:@"重新设置的内容"];


     数组(NSArray&NSMutableArray) 

    ▲不可变数组(NSArray)

      C语言中的数组只能存放同一种基本数据类型,而OC中的数组可以存放多种数据类型(但是必须是对象类型,不能存放基本数据类型)。

        注意:我们在实际编程过程中,应尽量在一个数组里存放同一种数据类型

      #import "Person.h"

      Person *xiaowang = [[[Person alloc] init] autorelease];

      Person *zhangsan = [[[Person alloc] init] autorelease];

      1.创建一个数组

        ①NSArray *array = @[@"xiaoming", xiaowang, zhangsan];

         NSArray *array_1 = @[array, @"xml", @"xmh"];

        ②NSArray *array_2 = [NSArray array];

         NSArray *array_3 = [[NSArray alloc] init];

        ③NSArray *array_4 = [NSArray arrayWithArray:array];

         NSArray *array_5 = [[NSArray alloc] initWithArray:array];    (冒号后面的『array』就是@[@"xiaoming", xiaowang, zhangsan])

        ④创建的时候初始化一部分数据

         NSArray *array_6 = [NSArray arrayWithObject:xiaowang];

         数组结尾为nil,不能向数组里面添加一个值为nil的对象

         NSArray *array_7 = [NSArray arrayWithObjects:xiaoming, zhangsan, nil];

      2.获取数组元素的个数 count

        NSLog(@"The count of the array is %ld.", [array count]);

      3.获取相应位置的元素(对象)

        Person *temp = [array_7 objectAtIndex:0];

        Person *temp_1 = [array_7 lastObject];    获取最后一个对象

        Person *temp_2 = [array_7 firstObject];    获取第一个对象

      4.遍历数组

        ①正常方法,需要记录位置时用

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

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

          }

        ②快速循环,不需要记录位置时用,一般常用的为这个

          for (Person *temp in array_7){

            NSLog(@"%@", temp)

          }

      5.判断一个数组是否包含一个对象

        if ([array containsObject:@"asdfds"]){

          NSLog(@"YES");

        } else{

          NSLog(@"NO");

        }

      6.获取某个对象在数组中的索引值

        NSUInteger index = [array_7 indexOfObject:@"asdfds"];    当数组中没有这样一个对象的时候,返回的将是一个极大的值 

     

     

    ▲可变数组(NSMutableArray)  同样是继承于『NSArray』

      1.创建可变数组

        NSMutable *mArray = [NSMutable arrayWithCapacity:3];

      2.增加对象

        [mArray addObject:xiaoming];

      3.插入对象

        [mArray insetObject:array_4 atIndex:1];

      4.删除对象

        ①[mArray removeObject:xiaoming];

        ②[mArray removeObjectAtIndex:3];

        ③删除所有对象

         [mArray removeAllObjects];

      5.交换对象的位置

        [mArray exchangeObjectAtIndex:0 withObjectAtIndex:1];

        

  • 相关阅读:
    【idea-部署web项目】
    【IDEA下使用tomcat部署web项目】
    【 PLSQL Developer安装、tnsnames.ora配置 解答】
    【idea--git】
    【Sping管理bean的原理】
    【关于eclipse的一些自己常用的插件】
    【Spring-任务调度】
    【mysql存储引擎】
    【mysql-索引+存储过程+函数+触发器-更新。。。】
    【转-mysql-explain介绍】
  • 原文地址:https://www.cnblogs.com/immustard/p/5070248.html
Copyright © 2011-2022 走看看