Objective-C中NSString与NSMutableString的一些简单应用

本文深入探讨了Objective-C中处理字符串的两类主要类:NSString和NSMutableString。详细介绍了它们的功能、方法及其在实际应用中的操作流程,包括字符串拼接、格式化、插入、删除、替换、大小写转换等,并通过实例展示了如何在代码中运用这些特性。
摘要由CSDN通过智能技术生成

在Objective-C中,处理字符串的类主要有NSString和NSMutableString。

NSString类是不可变的类,一旦对象被创建,包含在这个对象中的字符序列是不可改变的,直至这个对象被销毁。

如下:

<pre name="code" class="objc">#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{

    @autoreleasepool {
        NSString* str = @"Hello";
        NSString* book = @"《疯狂iOS讲义》";
        //在str后面追加固定到字符串
        //原来的字符串对象并不改变,只是将新生成的字符串重新赋值给str指针变量
        str = [str stringByAppendingString:@",iOS!"];
        NSLog(@"%@",str);
        
        //获取字符串对应的C风格字符串
        const char* cstr = [str UTF8String];
        NSLog(@"获取的C字符串:%s",cstr);
        
        //在str后面追加变量的字符串
        str = [str stringByAppendingFormat:@"%@是一本非常不错的图书.",book];
        NSLog(@"%@",str);
        
        NSLog(@"str的字符个数为:%lu",[str length]);
        NSLog(@"str按UTF-8字符集解码后字节数为:%lu",[str lengthOfBytesUsingEncoding:NSUTF8StringEncoding]);
        
        //获取str的前10个字符串组成的字符串
        NSString* s1 = [str substringToIndex:10];
        NSLog(@"%@",s1);
        
        //获取str从第5个字符开始,与后面字符串组成到字符串
        NSString* s2 = [str substringFromIndex:5];
        NSLog(@"%@",s2);
        
        //获取str从第5个字符开始,到第15个字符组成第字符串
        NSString* s3 = [str substringWithRange:NSMakeRange(5, 15)];
        NSLog(@"%@",s3);
        
        //获取iOS在str中出现的位置
        NSRange pos = [str rangeOfString:@"iOS"];
        NSLog(@"iOS在str中出现的开始位置:%ld , 长度为:%ld",pos.location ,pos.length);
        
        //将str的所有字符转为大写
        str = [str uppercaseString];
        NSLog(@"%@",str);
        
        
    }
    return 0;
}

 打印日志如下: 

2014-08-26 00:40:52.780 NSStringTest2[642:303] Hello,iOS!

2014-08-26 00:40:52.782 NSStringTest2[642:303]获取的C字符串:Hello,iOS!

2014-08-26 00:40:52.782 NSStringTest2[642:303] Hello,iOS!《疯狂iOS讲义》是一本非常不错的图书.

2014-08-26 00:40:52.782 NSStringTest2[642:303] str的字符个数为:30

2014-08-26 00:40:52.783 NSStringTest2[642:303] strUTF-8字符集解码后字节数为:62

2014-08-26 00:40:52.783 NSStringTest2[642:303] Hello,iOS!

2014-08-26 00:40:52.783 NSStringTest2[642:303] ,iOS!《疯狂iOS讲义》是一本非常不错的图书.

2014-08-26 00:40:52.784 NSStringTest2[642:303] ,iOS!《疯狂iOS讲义》是

2014-08-26 00:40:52.784 NSStringTest2[642:303] iOSstr中出现的开始位置:6 , 长度为:3

2014-08-26 00:40:52.784 NSStringTest2[642:303] HELLO,IOS!《疯狂IOS讲义》是一本非常不错的图书.

Program ended with exit code: 0


NSMutableString对象则代表一个字符序列可变的字符串,而且NSMutableString是NSString的子类,因此包含NSString的所有方法,可以直接使用。

看如下应用:

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{

    @autoreleasepool {
        NSString* book = @"《疯狂iOS讲义》";
        //创建一个NSMutableString对象
        NSMutableString* str = [NSMutableString stringWithString:@"Hello"];
        
        //追加固定字符串
        //字符串所包含的字符序列本身发生里改变,因此无需重新赋值
        [str appendString:@", iOS!"];
        NSLog(@"%@",str);
        
        //追加带变量带字符串
        //字符串所包含的字符序列本身发生里改变,因此无需重新赋值
        [str appendFormat:@"%@是一本非常不错的图书.",book];
        NSLog(@"%@",str);
        
        //在指定位置插入字符串
        //字符串所包含的字符序列本身发生里改变,因此无需重新赋值
        [str insertString:@"fkit.com" atIndex:6];
        NSLog(@"%@",str);
        
        //删除从6到12的所有字符集
        [str deleteCharactersInRange:NSMakeRange(6, 12)];
        NSLog(@"%@",str);
        
        //将从6到9到字符串替换成Objective-C
        [str replaceCharactersInRange:NSMakeRange(6, 9) withString:@"Objective-C"];
        NSLog(@"%@",str);
        
        
        
    }
    return 0;
}

打印日志如下:

2014-08-25 23:56:46.918 NSMutableStringTest[388:303] Hello, iOS!

2014-08-25 23:56:46.919 NSMutableStringTest[388:303] Hello, iOS!《疯狂iOS讲义》是一本非常不错的图书.

2014-08-25 23:56:46.919 NSMutableStringTest[388:303] Hello,fkit.com iOS!《疯狂iOS讲义》是一本非常不错的图书.

2014-08-25 23:56:46.920 NSMutableStringTest[388:303] Hello,!《疯狂iOS讲义》是一本非常不错的图书.

2014-08-25 23:56:46.920 NSMutableStringTest[388:303] Hello,Objective-C》是一本非常不错的图书.

Program ended with exit code: 0




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值