OC-字符串常用操作(NSString、NSMutableString)

本文探讨Cocoa框架下,NSString和NSMutableString如何简化字符串处理。讲解了NSString的基本特性以及NSMutableString的可变操作,展示了两者在C语言字符数组基础上的优化提升。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在C语言中,将字符串作为简单的字符数组进行处理,并在数组添加尾部的零字节作为结束标志。

而在Cocoa中,NSString存在很多内置方法,极大的优化了字符串的处理


NSString类型

    NSString *string0 = @"hello IOS";//定义字符串
    NSString *str = [[NSString alloc] initWithFormat:@"hello"];
    NSString *str1 = [NSString stringWithFormat:@"IOs"];//遍历构造器
    NSLog(@"%c", [str characterAtIndex:1]);//获取字符串中指定位置的字符
    NSInteger count = [string0 length];//字符串长度
    NSString *string1 = [string0 stringByAppendingString:@"haha"];//字符串追加
    bool flag = [string1 isEqualToString:string0];//字符串比较,注意:此方法只能比较字符串是否相等返回布尔类型值,如需要判断字符串大小应使用compare
    long ret2 = [str1 caseInsensitiveCompare:str2];//不区分大小写比较字符串大小
    NSString * ptr = [str uppercaseString];//将字符串中的所有小写字符转换成大写 不改变原来的字符串
    ptr = [str1 lowercaseString];//将字符串中的所有大写字符转换成小写 不改变原来的字符串
    NSRange range = [str4 rangeOfString:@"wr"];//查找子串,找不到返回NSNotFound 找到返回location和length
    NSString *string3 = [string0 substringToIndex:5];//从字符串的开头截取到指定位置,但是切记标记是从0开始,不包括5位置的字符
    NSString *string4 = [string0 substringFromIndex:5];//这是指从字符串指定位置开始,包括这个位置的字符,向后复制
    NSString *string5 = [string0 substringWithRange:NSMakeRange(1, 4)];//从给定的位置1去除长度为4的字串
     //拼接字符串,str本身不会变化
     NSLog(@"%@ ", [str stringByAppendingFormat:@"IOS"]);
     NSLog(@"%@ ", [str stringByAppendingString:@"IOS"]);
    //字符串替换,str本身不变
    NSLog(@"%@ ", [str stringByReplacingOccurrencesOfString:@"hello"withString:@"Hi"]);
</pre><pre name="code" class="objc">    NSString *number = @"1111";
    int num = [number intValue];//字符串转int型
    double nums = [number doubleValue];//字符串转double
<pre name="code" class="objc">     NSString * filenames = @"draft-chapter.pages"; //判断字符串是否包含字符串,可以用来判断文件类型
     if ([filenames hasPrefix:@"draft"]) {
        NSLog(@"this is pages");         //前
     }
     if ([filenames hasSuffix:@".mov"]) {
        NSLog(@"this is mov");          //后
     }
<pre name="code" class="objc">    //字符串切分成数组
    NSString *string_arr = @"oop:haha:hehe:heihei";
    NSArray *chunks = [string_arr componentsSeparatedByString:@":"];
    //合并数组为字符串
    string_arr = [chunks componentsJoinedByString:@"*"];

 
 

NSMutableString类型

    NSMutableString *string = [NSMutableString stringWithCapacity:50];     //分配内存
    NSMutableString *string_1 = [NSMutableString stringWithString:@"haha"];//插入字符串
    [string insertString:@"IOS" atIndex:6];                                //指定位置插入字符串
    [string deleteCharactersInRange:NSMakeRange(2, 6)];                    //指定位置删除指定长度字符串<pre name="code" class="objc">    [string setString:@"Oc"];//设置字符串,string如果存在字符串则替换
    [string replaceCharactersInRange:NSMakeRange(3, 4) withString:@"like"];//从第三个字符开始替换,替换四个字符
    [string appendString:@"hello there "];        //接收字符串,复制到接收对象的末尾
    [string appendFormat:@"human %d", 39]; //与stringWithFormat类似,没有创建新的字符串,将格式化的字符串附加在接收字符串的末尾
    NSRange range = [string rangeOfString:@"there"];//删除字符串中得字符there
    range.length++;
    [string deleteCharactersInRange:range];

 
 
<pre name="code" class="objc">    NSRange subStr = [string rangeOfString:@"IOS"]; //查找字符串
    if (subStr.location != NSNotFound) {
        [string deleteCharactersInRange:subStr]; //删除已查找到的字符串
    }
    //查找第一个匹配并替换
    if (subStr.location != NSNotFound) {
        [string replaceCharactersInRange:subStr withString:@"This"];      //把第1个遇到的substr替换为This
    }
    //查找全部匹配的字符,并替换
    NSString *search = @"a";
    NSString *replace = @"A";
    subStr = [string rangeOfString:search];
    while (subStr.location != NSNotFound) {
        [string replaceCharactersInRange:subStr withString:replace];
        subStr = [string rangeOfString:search];
    }
 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值