• OC基础数据类型-NSString


    1、字符串的初始化

    1 //字符串的初始化
    2 NSString *str = @"Hello world!";
    3 NSString *str2 = [[NSString alloc] initWithString:str];
    4 NSString *str3 = [[NSString alloc] initWithUTF8String:"hello world"]; //用C的字符串创建OC的字符串对象
    5 NSString *str4 = [[NSString alloc] initWithFormat:@"hello %d %c",5,'A']; //使用格式符拼接成一个字符串

    用这种方法(alloc)创建的字符串需要释放一下

    1 //用alloc生成的字符串,需要释放一下
    2 [str2 release];
    3 [str3 release];
    4 [str4 release];

    所有的alloc init版本的字符串声明,都对应着一个StringWith版本。不需要考虑内存管理

    1 NSString *str5 = [NSString stringWithUTF8String:"hellow world"];
    2 NSString *str6 = [NSString stringWithFormat:@"%d %@ %c",1,@"hello",'R'];
    3 NSString *str7 = [NSString stringWithString:str];

    以上三种是自动释放,很难确认在哪里释放,所以叫临时字符串。不需要release

    以上创建的字符串都是不可以变化的

    2、字符串的方法

    1 NSString *str = @"hello world!";
    2 NSString *str2 = @"hello word!";

    判断两个字符串是否相等

    1 //判断两个字符串是否相等
    2 BOOL ret = [str isEqualToString:str2];
    3 NSLog(@"%d", ret);//返回true或者false,由于返回值是0或1,所以用%d

    比较两个字符串的大小

     1 //比较两个字符串的大小
     2 NSComparisonResult comRet = [str compare:str2]; //NSComparisonResult是一个枚举,返回值NSOrderedAscending = -1L, NSOrderedSame, NSOrderedDescending
     3 if(comRet == NSOrderedAscending){
     4     NSLog(@"str < str2");
     5 }
     6 else if(comRet == NSOrderedSame){
     7     NSLog(@"str == str2");
     8 }
     9 else if(comRet == NSOrderedDescending){
    10     NSLog(@"str > str2");
    11 }

    查找字符串的位置

    1 NSString *str = @"I am a so bad man.";
    2 NSString * subStr = @"so";
    3 //查找subStr在str中的位置,返回NSRange
    4 NSRange range = [str rangeOfString:subStr];//返回位置和长度
    5 NSLog(@"location:%lu, %lu",range.location,range.length);

    获取子字符串

    1 NSString *str = @"0123456789";
    2 NSString *str2 = [str substringToIndex:6];    //从str中提取从头至第6个字符串(不包括第6个),生成新字符串,返回字符串地址。
    3 NSString *str3 = [str substringFromIndex:6];    //从str中提取第6个字符(包括第6个),到最后一个字符,生成新字符串,返回字符串地址
    4 //根据指定范围提取字符串
    5 NSRange range = {3, 4};//3表示起始位置,4表示长度
    6 NSString *str4 = [str substringWithRange:range];
    7 NSString *str5 = [str substringWithRange:NSMakeRange(3, 4)];//与上面相同,NSMakeRange直接返回Range

    3、可变字符串:继承自字符串,拥有以上的所有方法:包括创建、提取、比较等,但是也增加了一些方法

    不能用这个方法创建可变字符串:NSMutableString *str = @"Hello world!";

    其他的创建方法都可以。

    增加的方法:增、删、改、查

    1 NSMutableString *str = [[NSMutableString alloc] init];
    2 [str setString:@"hello"];   //设置可变字符串的内容,再次设置就会发生替换字符串内容
    1 //增,两种方式:追加、插入
    2 [str appendString:@"123"];  //追加append,在结尾处字符串
    3 [str appendFormat:@"%c",'R'];    //追加append,在结尾处追加格式符
    4         
    5 [str insertString:@"XXXX" atIndex:4];   //插入insert,在Index位置插入
    1 //删,delete
    2 [str deleteCharactersInRange:NSMakeRange(3, 5)];    //从第3个开始,删除5个字符
    1 //改,replace
    2 [str replaceCharactersInRange:NSMakeRange(3, 2) withString:@"RRRRRRRR"];

    结题!!!

  • 相关阅读:
    sicp-py
    Ubuntu下找不到ttyUSB*问题解决
    Mysql基本命令及数据库存储位置
    open-vm-tools与VMware Tools
    64位ubuntu安装交叉编译工具链,显示找不到命令
    VMware Tools 继续运行脚本未能在虚拟机中成功运行。
    VMware Workstation 14安装VMware Tools
    VMware Workstation14 安装Ubuntu18.04
    Linux安装Sqlite
    mysql中文乱码
  • 原文地址:https://www.cnblogs.com/GISerYang/p/3338805.html
Copyright © 2020-2023  润新知