A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 魏武 高级黑马   /  2015-8-30 16:47  /  685 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一,NSRange的使用
1,NSRange的介绍
    NSRange是Foundation框架中比较常用的结构体, 它的定义如下:
    typedef struct _NSRange {
        NSUInteger location;
        NSUInteger length;
    } NSRange;
  NSRange用来表示事物的一个范围,通常是字符串里的字符范围或者数组里的元素范围
    NSRange有2个成员
    NSUInteger location : 表示该范围的起始位置
    NSUInteger length : 表示该范围内的长度
2,NSRange的创建
    1), NSRange range;
    //通过结构体变量访问成员
    range.location = 3;
    range.length = 2;
    2),//结构体变量整体赋值
    range = (NSRange){5,3};
    NSRange r2 = {4,5};  //最简单的
    3),
    NSRange r3 = {.location = 3,.length = 5};
    4),OC中新增的(OC中建议使用这种)
    //NSMakeRange函数的作用给 NSRange结构体变量赋值
    NSRange r4 = NSMakeRange(3, 3);
    NSString *str = NSStringFromRange(r4);//将一个结构体转化成字符串
二,字符串的截取和替换
    1,从指定位置from开始(包含起始位置)到尾部
        - (NSString *)substringFromIndex:(NSUInteger)from;
    2,从字符串的开头一直截取到指定的位置to,不包含结束位置
        - (NSString *)substringToIndex:(NSUInteger)to;
    3,按照所给出的NSRange从字符串中截取子串
        - (NSString *)substringWithRange:(NSRange)range;
    4,字符串截取练习(获取itcast标签中的内容)
        NSString *str = @"<itcast>传智</itcast>";
        //  @">"  loc+1
        NSUInteger loc = [str rangeOfString:@">"].location + 1;  //"传"得位置
        //  @"</" loc
        NSUInteger len = [str rangeOfString:@"</"].location - loc;  //要截取的字符的长度
        // 构建 ruange
        NSRange r2 = NSMakeRange(loc, len);
        // 截取
        NSString *subStr = [str substringWithRange:r2];
    5,字符串替换
        - (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement;
        用replacement替换target(前面是要被替换的子串,后面是要替换成的子串)
        注意:可以随意替换只要遇到相同的子串都可以替换成想替换成为的字符串!
三,字符串和其他数据类型转换
    1,和基本数据类型的转换
        - (double)doubleValue;
        - (float)floatValue;
        - (int)intValue;
        - (BOOL)boolValue;
    2,C字符串转OC 字符串
        char *s = "zhangsanfeng";
        NSString *str = [NSString stringWithUTF8String:s];
    3,OC字符串转C字符串
        NSString *str2 = @"zbz";
        const char *s1 = [str2 UTF8String];
    4,去除字符串首尾的空格
        NSString *str = @" itc ast ";
        NSCharacterSet *set =[NSCharacterSet whitespaceCharacterSet];
        NSString *newStr = [str stringByTrimmingCharactersInSet:set];
四,通过NSURL读写字符串
    1,URL介绍
        URL的全称是Uniform Resource Locator(统一资源定位符).
        URL是互联网上标准资源的地址.
    2,URL格式
        基本URL包含:协议、主机域名(服务器名称\IP地址)、路径
        举例: http://ios.itcast.cn/ios/images/content_25.jpg
        可以简单认为: URL == 协议头://主机域名/路径
    3,通过URL读写字符串
        构建URL
        NSURL *url = [NSURL URLWithString:@"file:///Users/apple/Desktop/str.txt"];//需要手动加file://协议头
        通过文件路径创建(默认就是file协议的)
        NSURL *url = [NSURL fileURLWithPath:@"/Users/apple/Desktop/str.txt"];//自动会将file://协议头加上
        NSString *str = @"$10000000";
        1),写入字符串
            [str writeToURL:url atomically:YES encoding:NSUTF8StringEncoding error:nil]
        2),读取字符串
             NSString *str2 = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
五,NSMutableString的介绍和使用
    1, NSMutableString类继承NSString类
    2,NSMutableString和NSString的区别:
        NSString是不可变的, 里面的文字内容是不能进行修改的;
        NSMutableString是可变的, 里面的文字内容可以随时更改;
        NSMutableString能使用NSString的所有方法.(继承)
    3, 可变和不可变的概念:
        不可变: 指的是字符串在内存中占用的存储空间固定,并且存储的内容不能发生变化;
        可变:   指的是字符串在内存中占用的存储空间可以不固定,并且存储的内容可以被修改;
    4,使用:
         NSMutableString *str2 = [NSMutableString stringWithFormat:@"Jack"];
            1),添加:
                [str2 appendString:@"&Rose"];
                [str appendFormat:@"http://www.baidu.com/%d",100];//格式化的添加字符串
            2),在指定的位置插入一个字符串:
                 [str insertString:@"p://" atIndex:3];
            3),删除一部分字符串:
                 [str deleteCharactersInRange:NSMakeRange(3, 4)];
            4),替换字符串的一部分内容
                 [str replaceCharactersInRange:NSMakeRange(11, 5) withString:@"itcast"];
    使用注意:
        1),不能将不可变的字符串赋值给可变的字符串;
            NSMutableString *str = [NSString stringWithFormat:@"abc"];
一,NSArray
    1,NSArray介绍
        1),NSArray是OC中的数组类, 开发中建议尽量使用NSArray替代C语言中的数组;
        2),只能存放任意OC对象, 并且下标都是有顺序的;
        3),不能存储非OC对象, 比如int\float\double\char\enum\struct等;
        4),它是不可变的, 一旦初始化完毕后, 它里面的内容就永远是固定的,不能删除里面的元素,也不能再往里面添加元素;
        5),不能存放nil值,可以存放NSNull对象;例如:[NSNull null];
    2,NSArray的创建方式
        1),类方法创建
            + (instancetype)array;
            + (instancetype)arrayWithObject:(id)anObject;
            + (instancetype)arrayWithObjects:(id)firstObj, ...;
            + (instancetype)arrayWithArray:(NSArray *)array;
            + (id)arrayWithContentsOfFile:(NSString *)path;
            + (id)arrayWithContentsOfURL:(NSURL *)url;
        2),对象方法创建
            - (instancetype)initWithObjects:(id)firstObj,... ;
            - (instancetype)initWithArray:(NSArray *)array;
            - (NSArray *)initWithContentsOfFile:(NSString *)path;
            - (NSArray *)initWithContentsOfURL:(NSURL *)url;
        3),常见用法
            - (NSUInteger)count; 获取集合元素个数
            - (id)objectAtIndex:(NSUInteger)index; 获得index位置的元素
            - (BOOL)containsObject:(id)anObject;是否包含某一个元素
            - (id)lastObject; 获取最后一个元素
            - (id)firstObject; 获取第一个元素
            - (NSUInteger)indexOfObject:(id)anObject; 查找anObject元素在数组中的位置
    3,NSArray的简写形式(这种简写方式,称为字面量)
        NSArray *arr = @[@"Jack", @"Rose", @"Jim"];
        格式:
            NSArray *arr = @[数组元素];
        获取元素格式:
            arr[元素角标index];
            NSString *str =  arr[0];//获取第零个元素
    4,NSArray的遍历
        NSArray *arr = @[@"one",@"two",@"three",@"four"];
        1),普通for循环,通过下标访问
            for (int i=0; i<arr.count; i++) { NSLog(@"-> %@",arr[i]);}
        2),增强for循环  (for in)
            for (NSString * str in arr) {
                NSLog(@"---> %@",str);
            }
        3),使用block的方式,进行遍历
            //block的三个参数含义:   1,数组元素   2,元素下标  3,是否停止
            [arr enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
                if(idx == 2){
                    *stop = YES;  //停止  // break;
                }else{ NSLog(@"idx = %ld,obj = %@",idx,obj); }  }];
    5,NSArray 读写文件
        1),将数组元素写入文件
            - (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile;
        代码:
        NSArray *arr = [NSArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5", nil];
        //写入数据到plist文件中
        if([arr writeToFile:@"/Users/liwei/Desktop/arr.plist" atomically:YES]){
            NSLog(@"写入成功!");
        }
        2),从文件读取数组
            + (NSArray *)arrayWithContentsOfFile:(NSString *)path;
        代码:
            NSArray *readArr = [NSArray arrayWithContentsOfFile:@"/Users/zhaoxiaohu/Desktop/arr.xml"];
    6,NSArray 与字符串
        1),把数组元素链接成字符串(NSArray的方法)
            - (NSString *)componentsJoinedByString:(NSString *)separator;
            这是NSArray的方法, 用separator作拼接符将数组元素拼接成一个字符串
        2),字符串分割方法(NSString的方法)
            NSString *str =@"400-588-1688";
            NSArray *arr = [str componentsSeparatedByString:@"-"];

2 个回复

倒序浏览
发帖字数限制,没发完,还有一点内容,现在补上
二,NSMutableArray
    1,NSMutableArray介绍
        1),NSMutableArray是NSArray的子类
        2),NSArray是不可变的, 一旦初始化完毕后, 它里面的内容就永远是固定的, 不能删除里面的元素, 也不能再往里面添加元素 。
        3),NSMutableArray是可变的, 随时可以往里面添加\更改\删除元素
    2,NSMutableArray基本使用方法
        1),创建数组
            //创建空数组
            NSMutableArray *arr = [NSMutableArray array];
            //创建数组,并且指定长度为5,此时也是空数组
            NSMutableArray *arr2 = [[NSMutableArray alloc] initWithCapacity:5];
            //创建一个数组,包含两个元素
            NSMutableArray *arr3 = [NSMutableArray arrayWithObjects:@"1",@"2", nil];
            //调用对象方法创建数组
            NSMutableArray *arr4 = [[NSMutableArray alloc] initWithObjects:@"1",@"2", nil];
        2),添加元素
            - (void)addObject:(id)object; 添加一个元素
        3),插入元素
            - (void)insertObject:(id)anObject atIndex:(NSUInteger)index;
        4),删除元素
            - (void)removeAllObjects;//删除全部
            - (void)removeLastObject;//删除最后一个
            - (void)removeObjectAtIndex:(NSUInteger)index;//删除指定位置
            - (void)removeObject:(id)anObject;//删除指定元素
        5),修改元素
            - (void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject;
        6),查找元素
            - (BOOL)containsObject:(id)anObject;
        7),交换元素
            交换idx1和idx2位置的元素
            - (void)exchangeObjectAtIndex:(NSUInteger)idx1 withObjectAtIndex:(NSUInteger)idx2;
    3,NSMutableArray 错误用法
        NSMutableArray *array = @[@"bob", @"steve", @"john"];//这句话报警告
        使用@[@"bob", @"steve", @"john"]这种方式创建的永远是NSArray(不可变数组);
    正确用法:
        NSMutableArray *array = [NSMutableArray arrayWithArray:@[@"bob", @"steve", @"john"]];
回复 使用道具 举报
很棒,赞一个
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马