• OC——Foundation—常用的类(1)字符串(NSString)


    OC—Foundation中常用的类包括:字符串,集合,字典等
     
    字符串:NSString
    Java中string的常量是不可以改变的,stringBuild,和stringBuff中的字符串是可以改变的
    OC中的NSString也是不可变的
    • 创建常量字符串
    NSString *string = @“This is a String!”;
     
    • 创建空字符串,给予赋值
    NSString *string = [[NSString alloc] init];
    string = @“This is a String!”;
     
    • 通过字符串创建字符串
    [[NSString alloc] initWithString:@“This is a String!”];
    //或者[[NSString alloc] initWithFormat:@“My age is %i”,19];
    • 用标准c创建字符串
    char *cString ="这是一个字符串”;
    [[NSString alloc] initWithString:cString encoding:NSUTF8StringEncoding];
    或者[[NSString alloc] initWithUTF8Sting:cString];
    //字符串编码可以在NSString.h中查阅
    通过alloc创建的字符串是需要释放的,用@赋值的字符串不需要释放;
     
    用如下方法可以实现不需要管理内存:
    NSString *str=[[NSString alloc] initWithString:@“this is a string”];
    //这个创建str需要释放内存
    
    NSString *str=[NSString stringWithString:@"this is a string"];
    //这个创建str不需要释放内存
    以上代码只是比较用,如果要同时使用,需要先释放掉前一行创建的对象,否则会造成内存泄露
     
    从文本文件中读取文本:
    NSString *path=@“/User/desktop/test.txt”;
    nsstring *str=[NSString stringWithContentOfFile:path encoding:NSUTF8StringEncoding error:nil];
     
     
    NSString的导出
    NSString *path =@“/User/desktop/test.txt”;
    NSString *str=@"123";
    NSError *error;
    [str writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:&error];
    其中atomically表示是否使用原子性:原子性意思就是,在写入文件的时候会创建一个临时文件,当所有内容都写入之后再把这些内容拷贝到目的文件。这样可以保证程序在写入出错的时候不会对目的文件造成破坏。
    如果文件不存在会自动帮我们创建文件,如果文件夹不存在,则会报错。
     
    NSString的大小写处理
    • -(NSString *)uppercaseString     全部转为大写字母
    • -(NSString *)lowercaseString      全部转为小写字母
    • -(NSString *)capitalizedString     首字母遍大写,其他字母都变小写
     
    NSString的比较
    • -(BOOL)isEqualToString:(NSString *)aString                                                                                     

            比较两个字符串的内容是否相同,相同就返回YES,不同就返回NO

    • -(NSComparisonResult)compare:(NSString *)string
            逐个字符的进行比较,返回NSComparisonResult来显示比较结果
            NSComparisonResult是一个枚举,有3个值;
            NSOrderedAscending =-1L, NSOrderedSame, NSOrderedDescending
            如果左侧大于右侧,返回NSOrderedDescending,
            如果左侧小于右侧,返回NSOrderedAscending,
            否则返回NSOrderedSame
    • -(NSComparisonResult)caseInsensitiveCompare:(NSString *)string                                                

            忽略大小写进行比较,返回值于compare:一致

     
    NSString中搜索字符串
    -(BOOL)hasPrefix:(NSString *)aString是否以aString开头
    -(BOOL)hasSuffix:(NSString *)aString是否以aString结尾
    -(NSRange)rangeOfString:(NSString *)aString检查是否包含了aString,如果包含,就返回aString的位置,如果不包含,NSRange的location为-1,length为0
    -(NSRange)rangeOfString:(NSString *)aString options:(NSStringCompareOptions)mask
    可以产地一个mask参数,改变搜索方式
    比如NSStringCompareOptions为NSBackwardsSearch表示从尾部开始搜索
    -(NSRange)rangeOfString:(NSString *)aString options:(NSStringCompareOptions)mask range:(NSRange)searchRange 还可以用searchRange指定搜索范围
     
    NSString的截取
    • -(NSString *)substringFromIndex:(NSUInteger)from                                                                          从指定位置from开始(包括指定位置的字符)到尾部
    • -(NSString *)substringToIndex:(NSUInteger)to                                                                                 从字符串的开头一致截取到指定的位置to,但不包括该字符
    • -(NSString *)substringWithRange:(NSRange)range                                                                                 按照所给出的NSRange从字符串中截取子串
    • -(NSArray *)componentsSeparatedByString:(NSString *)separator
            用separator为分隔符截取子串,返回一个装着所有子串的集合NSArray
     
     
    NSString强制类型转换
    • -(double)doubleValue
    • -(float)floatValue
    • -(int)intValue
    • -(char *)UTF8String
     
     
    NSMutableString
    NSString是不可变的,不能删除字符或者添加字符。NSString有一个子类NSMutableString,称为可变字符串
    创建可变字符串:
    NSMutableString *str=[[NSMutableString alloc]initWithCapacity:10];
    [str setString:@"1234"];
    //拼接一个字符串
    [str appendString:@"5678"];
    //拼接字符串
    [str appendFormat:@"age is %i,height is %.2f",24,1.75f];
    //替换字符串
    NSRange range=[str rangeOfString:@"height"];
    [str replaceCharactersInRange:range withString:@"no"];
    //插入字符串
    [str insertString:@"abc" atIndex:2];
    capacity只是一个最优值,字符串的大小并不仅限于所提供的容量,设置了capacity,可以预分配一块内存来存储它,操作速度会快很多
    当然,也可以使用创建NSString的方法来创建NSMutableString,因为NSMutableString是NSString的子类,NSString能用的方法,NSMutableString都能使用
     
     
     
  • 相关阅读:
    强化学习的基本迭代方法
    基于文本描述的事务聚类
    学习强化学习之前需要掌握的3种技能
    其它 华硕 ASAU S4100U 系统安装 win10安装 重装系统 Invalid Partition Table 解决
    数据分析 一些基本的知识
    Python 取样式的内容 合并多个文件的样式 自定义样式
    电商 Python 生成补单公司需要的评论格式3
    SpringBlade 本地图片上传 生成缩略图
    SQL Server 字符串截取
    SpringBlade 本地图片上传
  • 原文地址:https://www.cnblogs.com/hqzxbb/p/4402424.html
Copyright © 2020-2023  润新知