美文网首页iOS的基础数据类型
iOS中的NSString和NSMutableString

iOS中的NSString和NSMutableString

作者: 783480470ed4 | 来源:发表于2018-08-22 22:44 被阅读32次

    1、NSString的一些创建和应用

    1、OC中专门描述字符串类型的一个类
    2、可重复使用
    3、字符串一旦创建就不可改变(能改,但是不是改当前str对象了)

    是一个对象,对象是可以用alloc创建的:
     NSString *str = [[NSString alloc]init];
    

    这是一个创建对象的方法,但是是一个空值,我们需要一个对象都是要使用的,那么空值的话将毫无意义(但是你可以赋值啊)

    2、创建的时候直接赋值

     NSString *str2 = @"helloWorld!";
    

    创建的时候就直接赋值了

     NSString *str3 = [[NSString alloc]initWithString:@"helloWorld!"];
    

    字符串创建的时候如果内容一样的话那么且已存在,那么不会创建新的字符串,内存空间是一样的!这是想相当于两个对象指向一个内存空间

     NSLog(@"str:%p,str2:%@",str2,str3);
    

    自行输出一下就可以看的出来

    3、这个占位符方法创建的字符串就算内容相同地址也不一样,这种方法一般适用于字符串拼接

     NSString *str4 = [[NSString alloc]initWithFormat:@"%@",str2];
    

    这时候NSLog输出一下的话会发现内容和str3内容一样,但是内存空间不一样了

     NSString *str5 = [[NSString alloc]initWithFormat:@"%@,%@",str2,str3];
    

    这就相当于拼接,如果你有注意的话会发现这其实和NSLog写法没什么差别,如何使用就自行发挥脑洞了

    4、以文件中的内容创建一个字符串,例如保存在桌面的一个文本文件

      NSString *str6 = [NSString stringWithContentsOfFile:@"/Users/Winter/Desktop/test" usedEncoding:NSUTF8StringEncoding error:nil];
    

    文件路径最后需要带上test这个文件名,默认使用UTF-8的的编码也是常用的(例如有中文或者其他语言等),后面的error是我们程序读取错误时该怎么处理,一般也是不会有问题所以我直接写了nil,严谨来说是需要注意的

     NSString *str7 = [NSString stringWithContentsOfURL:@"www.baidu.com" encoding:NSUTF8StringEncoding error:nil];
    

    还一个以网页的内容设置为str的,和本地文件方法类似,当然百度是不可以的,原谅我懒

    NSString的一些使用方法:

    1、判断字符串是否相同,不是判断地址而是内容,如果返回的是YES就是相同

     BOOL isEqual =  [str2 isEqualToString:str3];
    

    2、比较字符串的大小

     NSComparisonResult steCr =  [str2 compare:str3];
    
    NSOrderedSame = 0 即是相同的
    NSOrderedAscending = -1 是后者比前者大
    NSOrderedDescending = 1 是前者比后者大
      if (strCr == NSOrderedSame) {
        NSLog(@"他们是相等的");
    }else if (strCr == NSOrderedAscending)
    {
        NSLog(@"后者比前者大");
    }else
    {
        NSLog(@"前者比后者大");
    }
    

    2、NSMutableString可变字符串

    NSMutableString的创建
     NSMutableString *str8 = [[NSMutableString alloc]init];
    

    这时候创建一个空值的str就是有意义的了,因为我们创建的是一个可变string

     NSMutableString *str9 = @"HelloWorld";
    

    这是毫无意义的,虽然代码输入时不会报错,但是在执行修改的时候系统就会报错

     NSMutableString *str10 = [NSMutableString stringWithString:@"HelloWorld"];
    

    而这时候的创建可变的string赋值是可行的,而每次的创建都是新的地址

    NSMutableString的增删改查
    1、增加
      NSMutableString *str10 = [NSMutableString stringWithString:@"HelloWorld"];
     [str10 insertString:@"My" atIndex:5];
     NSLog(@"str10:%@",str10);
    

    这句话的意思是在str10字符串里第5个位置开始插入了“My”,这时候输出将会得到“HelloMyWorld”

    string的下标是从0开始计算的!
     [str10 appendString:@"asd"];
    

    这是在str10后面追加“asd”

     [str10 appendFormat:@"123%@abc",@"end"];
    

    指定格式追加“end”,当然你也可以追加一个string对象也是可以的

    2、修改
     NSRange rage = {1,3};//1是位置,3是长度
    
    [str10 replaceCharactersInRange:rage withString:@"ace"];
    

    从1的位置起3个长度单位替换成“ace”

    3、删除
     NSMutableString *str10 = [NSMutableString stringWithString:@"HelloWorld"];
     NSRange rage = {1,3};//1是位置,3是长度
     [str10 deleteCharactersInRange:rage];
    

    从1的位置开始3个长度删除,删除后的string后面的位置会自动补齐到前面会得出一个“HoWorld”

    4、查
     NSLog(@"str10:%@",str10);
    

    皮一下是会很开心的!

    4.1、字符串的截取,或者也可以理解查吧

     NSMutableString *str10 = [NSMutableString stringWithString:@"HelloWorld"];
    
    [str10 substringFromIndex:2];
    

    这是从2下标位置到最后,因为我们只给了开始位置

     NSString *str11 = [str10 substringFromIndex:2];
    

    字符串截取的还是字符串,如果后续还有操作那就设置成NSMutableString

     NSString *str12 = [str10 substringToIndex:3];
    

    这是到哪个位置的截取(不包含指定位置),默认从0开始,也就是0,1,2的位置

     NSRange rage2 = {1,3};
    
     NSString *str13 = [str10 substringWithRange:rage2];
    

    这时候有了个range,说明也就是指定位置了,从1的位置到3的位置!

    5、字符串大小写改变
      [str10 uppercaseString];
    

    这是将字符串的字母内容全部改为大写

    [str10 lowercaseString];
    

    这是将所有字符串的字母改为小写

     [str10 capitalizedString];
    

    这是将字符串头字母改为大写

    是否有某字符的开头或者结尾

     BOOL kaitou = [str10 hasPrefix:@"kaitou"];
    
     BOOL jiewei = [str10 hasSuffix:@"jiewei"];
    

    这是的判断语句,返回的是一个BOOL值

    相关文章

      网友评论

        本文标题:iOS中的NSString和NSMutableString

        本文链接:https://www.haomeiwen.com/subject/jnayiftx.html