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);

优质内容筛选与推荐>>
1、线程终止
2、[干货,阅后进BAT不是梦]面试心得与总结---BAT、网易、蘑菇街
3、Hibernate 中的DetachedCriteria。
4、js冒泡排序和数组去重
5、Codeforces Round #285 (Div. 2)C. Misha and Forest(拓扑排序)


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn