zoukankan      html  css  js  c++  java
  • iOS --转载 NSRange 和 NSString 详解

    一、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 = @"<hello>tangFeng</hello>";
            //  @">"  loc+1
            NSUInteger loc = [str rangeOfString:@">"].location + 1;  //"t"得位置
            //  @"</" 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 = @" test at ";
            NSCharacterSet *set =[NSCharacterSet whitespaceCharacterSet];
            NSString *newStr = [str stringByTrimmingCharactersInSet:set];

    四、通过NSURL读写字符串

    1,URL介绍
            URL的全称是Uniform Resource Locator(统一资源定位符).
            URL是互联网上标准资源的地址.
    
        2,URL格式
            基本URL包含:协议、主机域名(服务器名称IP地址)、路径
            举例: http://www.baidu.com/12121.png
            可以简单认为: 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:@"itnnnn"];
    
    使用注意:
            1),不能将不可变的字符串赋值给可变的字符串;
                NSMutableString *str = [NSString stringWithFormat:@"abc"];
            2),NSMutableString的string属性:会将源对象的所有字符串都覆盖掉。.string 属性可以修改字符串的内容
            3)开发中到底使用NSString还是NSMutableString?
    开发中绝大多数用到的都是NSString 只是如果需要做特殊处理的时候(截取、拼接、替换)等操作,才考虑使用NSMutableString
  • 相关阅读:
    mysql的基础增删改查(一)
    用sql的avg(score)求完平均值后,保存两位小数的方法(用于查询或视图)
    异常java.lang.IllegalArgumentException:attempt to create delete event with null entity
    jsp传到java的control层的方法
    Java基础知识整理(一)
    DataTables warning (table id = 'DataTables_Table_0');错误解决办法!
    关于HTML学习整理(一)
    jQuery EasyUI 数据网格
    EasyUI DataGrid分页数据绑定
    SQL输出矩阵
  • 原文地址:https://www.cnblogs.com/shenlaiyaoshi/p/10095630.html
Copyright © 2011-2022 走看看