zoukankan      html  css  js  c++  java
  • 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都能使用
     
     
     
  • 相关阅读:
    Win10+Ubuntu18.04 UEFI启动模式SSD+HDD
    Chap1:全景图[Computer Science Illuminated]
    [IDE] ECLIPSE取消自动更新
    [Unit Test] Unit Test Brief Introduction
    [ English ] 俚语 “Ping me=打我电话”
    Some Useful Resources for the Future Usage
    python错误记录
    django-用户认证模型
    Djiango-富文本编辑器
    Djiango-建立模型抽象基类
  • 原文地址:https://www.cnblogs.com/hqzxbb/p/4402424.html
Copyright © 2011-2022 走看看