oc——Foundation框架——字符串

创建字符串

NSString代表字符序列不可变的字符串,NSString的功能非常强大,oc的字符串处理比C语言的字符简单易用得多。
NSString的功能有这些:
🎇创建字符串,可以使用init开头的实例方法,也可以使用string开头的类方法,也可以直接使用@""的形式
🎇读取文件或网络URL来初始化字符串
🎇将字符串内容写入文件或URL
🎇获取字符串长度,可以获取字符个数或者字节个数
🎇获取字符串中的字符或字节,可以是指定位置的或者指定范围的
🎇获取字符串对应的C风格字符串
🎇连接字符串
🎇分隔字符串
🎇查找字符串内指定的字符和字串
🎇替换字符串
🎇比较字符串
🎇字符串比较大小
🎇对字符串中的字符进行大小写转换

NSString的常用功能

得到NSString字符串以后,接下来就可以调用NSString大量的功能性方法,这些方法的用法可以参考NSString的参考手册。

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSString * str = @"123456789";
        NSRange pos = [str rangeOfString : @"4567"];
        NSLog(@"123在str中出现的开始位置:%ld,长度为:%ld",pos.location,pos.length);
        str = [str stringByAppendingString :@"10"];
        //运用stringByAppendingString将10加在123456789后面
        NSLog(@"%@",str);
    }
    
}


运行结果:
在这里插入图片描述

上面程序中使用了一个NSRange类型的变量,NSRange并不是一个类,它只是一个结构体,它包括了location和length两个unsigned int整数值,分别代表起始位置和长度。

可变字符串(NSMutableString)

NSString类是不可变的类,即一旦NSString对象被创建,包含在这个对象中的字符序列是不可改变的,直至这个对象被销毁。
NSMutableString对象则代表一个字符序列可变的字符串,而且NSMutableString是NSString的子类,因此前面介绍的NSString所包含的方法,NSMutableString都可直接使用,NSMutableString对象也可直接当成NSString对象使用。
当一个NSMutableString被创建以后,通过NSMutableString提供的appendFormat:,appendString:,deleteCharacterInRange:,insertString:atIndex:,replaceCharactersInRange:withString:,replaceOccurrencesOfString:withString:options:range:,setString:方法即可改变该字符串所包含的字符序列。
下面程序中是对其中一些方法的使用:

#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.org" 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);
    }
    
}


程序的输出:
在这里插入图片描述
补充:

stringWithString和stringWithFormat区别

stringWithFormat会新申请一片空间并初始化字符串,所以每一个用stringWithFormat方法得到的字符串其指针都是不相同的;
而stringWithString是通过浅拷贝的方式得到字符串的,浅拷贝只拷贝指针不拷贝对象,所以其指针是相等的,内容也相等;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值