zoukankan      html  css  js  c++  java
  • NSMutalbleString

    NSMutalbleString

    NSMutableString和NSString的区别

    1. NSString是不可变的, 里面的文字内容是不能进行修改的
    2. NSMutableString是可变的, 里面的文字内容可以随时更改
    3. NSMutableString能使用NSString的所有方法

    什么是可变字符串?什么是不可变字符串?

    • 不可变字符串:指的是字符串在内存中占用的存储空间固定,并且存储的内容不能发生变化
    • 可变字符串:指的是字符串在内存中占用的存储空间可以不固定,并且存储的内容可以被修改

    NSMutalbleString常用方法

    对可变字符串增删改查

    NSMutableString *strM = [NSMutableString stringWithFormat:@"www.520it.com.520"];

     

    在字符串后面添加一段字符串

    [strM appendString:@"/image"];
    [strM appendFormat:@"/age is %i", 10];
    NSLog(@"strM = %@", strM);

     

    如何删除字符串中的520?

    技巧: 在开发中, 我们经常利用rangeOfString和deleteCharactersInRange方法配合起来删除指定的字符串

    1. 先查找出520在字符串中的位置
      NSRange range = [strM rangeOfString:@"520"];
    2. 删除520
      [strM deleteCharactersInRange:range];
      NSLog(@"strM = %@", strM);

    如何在520前面插入love这个单词

    // insertString : 需要插入的字符串
    // atIndex: 从哪里开始插入
    NSRange range = [strM rangeOfString:@"520"];
    [strM insertString:@"love" atIndex:range.location];
    NSLog(@"strM = %@", strM);

     

    问题4:如何将字符串中的520替换为530?

    答:

    • 注意: 如果是调用NSString的字符串替换方法, 不会修改原有字符串, 而是生产一个新的字符串
       NSString *newStr =[strM stringByReplacingOccurrencesOfString:@"520" withString:@"530"];

    注意:

    • 一般情况下OC方法要求传入一个参数如果没有*, 大部分都是枚举
    • 一般情况下如果不想使用枚举的值, 可以传入0, 代表按照系统默认的方式处理
    /*
     OccurrencesOfString: 需要替换的字符串
     withString: 用什么替换
     options: 替换时的搜索方式
     range: 搜索的范围
     返回值: 代表替换了多少个字符串
     */
    NSUInteger count = [strM replaceOccurrencesOfString:@"520" withString:@"530" options:0 range:NSMakeRange(0, strM.length)];
    NSLog(@"strM = %@", strM);
    NSLog(@"count = %lu", count);

     

    18.NSMutalbleString练习

    理解可变和不可变字符串的区别,和方法的使用

    问题1:拼接字符串有几种方法?

    答:

    需求: 将3个520it拼接在一起, 中间用空格隔开 520it 520it 520it

    NSString *subStr = @"520it";

    方法一:

    // 520it-
    
    NSString *newStr = [subStr stringByAppendingString:@" "];
    
    // 520it-520it
    
    newStr = [newStr stringByAppendingString:subStr];
    
    // 520it-520it-
    
    newStr = [newStr stringByAppendingString:@" "];
    
    // 520it-520-520it
    
    newStr = [newStr stringByAppendingString:subStr];

    方法二:

    • 注意: 在开发中如果需要对字符串进行频繁的操作, 不要使用不可变的字符串
           
      
      NSString *newStr = [subStr stringByAppendingString:@" "];;
      for (int i = 0; i < 2; ++i) {
          newStr = [newStr stringByAppendingString:subStr];
          newStr = [newStr stringByAppendingString:@" "];
      }
      
      // newStr = [newStr stringByReplacingCharactersInRange:NSMakeRange(newStr.length -1 , 1) withString:@""];
      newStr = [newStr stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
      NSLog(@"newStr = |%@|", newStr);

    方法三:

    // 创建一个空得字符串

    NSMutableString *strM  = [NSMutableString string];
    for (int i = 0; i < 3; ++i) {
        // 1.添加一个520it
        [strM appendString:subStr];
        // 2.添加一个空格
        [strM appendString:@" "];
    }
    [strM deleteCharactersInRange:NSMakeRange(strM.length - 1, 1)];
    NSLog(@"strM = |%@|", strM);
  • 相关阅读:
    word2vec原理
    tensorboard
    更换pip源到国内镜像
    pycharm打包exe
    whl文件下载
    pycharm连git和gitee
    Django基础
    mysql相关
    安装anaconda及pytorch
    VSCode 配置python
  • 原文地址:https://www.cnblogs.com/dreamWanweidong/p/4998691.html
Copyright © 2011-2022 走看看