Objective-C基础知识之(五):NSString

本文介绍Objective-C中NSString和NSMutableString类的基本用法,包括创建、比较、截取、拼接和替换字符串的方法。

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

NSString  不可变字符串类

 

使用方法:      

创建字符串对象

1、使用常量字符串对象(定义NSString*类型的指针操作)

NSString * name = @"hello";

2、使用格式化字符串创建对象

float score = 98.00;

(1)使用初始化方法

NSString * s1 = [[NSString alloc] initWithFormat:@"student's score:%.2f", score];

NSLog(@"%@",s1);

(2)使用便利构造器

NSString * s2 = [NSString stringWithFormat:@"student's score:%.2f", score];

NSLog(@"%@",s2);

(3)使用从文件中读取的文本信息,创建字符串对象

设定存储文件的路径

NSString * filePath= @"/Users/Desktop/test.txt";

存储错误信息

NSError * error = nil;

NSString * s3 = [[NSString alloc] initWithContentsOfFile:filePath encoding:NSUTF8StringEncodingerror:&error];

NSLog(@"%@",s3);

NSLog(@"%@",error);

不存储错误信息

NSString * s3 =[[NSString alloc] initWithContentsOfFile:filePath encoding:NSUTF8StringEncodingerror:nil];

NSLog(@"%@",s3);


3、字符串长度、范围

NSString * teststr =@"weareallfriends";

(1)求长度

NSUInteger strlength= [teststr length];

NSLog(@"%lu",strlength);

(2)求范围(某个字符串的位置和长度)

返回值为结构体:NSRange

获取信息:friend在字符串中的位置

NSRange range =[teststr rangeOfString:@"hen"];


location表示第一个字符在字符串中的位置,字符的位置有对应的编号,编号从0开始,相同的字符只能查找第一个字符的位置

分别打印方法:NSLog(@"%lu %lu", range.location,  range.length);

全部打印方法:NSLog(@"%@", NSStringFromRange(range));

       

4、字符串比较

NSString * str = @"http://www.baidu.com";

 

(1)判断字符串是否包含某个前缀(字符串是否以XXX开头)

如:判断用户输入的网址是否是以http://开头

BOOL r1 = [str hasPrefix:@"http://"];

NSLog(@"%d",r1);

       

(2)判断字符串是否包含某个后缀(字符串是否以XXX结尾)

如:判断用户输入的用户名是否以@qq.com结尾

BOOL r2 = [str hasSuffix:@" @qq.com "];

NSLog(@"%d",r2);

       

(3)比较两个字符串内容的的大小(按照ASCII编码进行比较)

如:(按照姓名排序,姓名是汉字,先把汉字转成拼音,然后比较英文)

NSString * s1 = @"zhangsan";

NSString * s2 = @"lisi";

NSComparisonResult r3 = [s1 compare: s2];

//返回值类型为NSUinteder,使用%lu接收。

NSLog(@"%lu",r3);

NSLog(@"%ld",[s1 compare:s2]);//可以直接读取比较的值。     

Compare内部实现的比较过程      

NSOrderedAscending;-1 前 < 后

NSOrderedSame;0       前 = 后

NSOrderedDescending;1 前 > 后

这里的升序和降序,表示两个进行比较的对象。


(4)比较两个字符串对象的内容是否相同

如:登陆页面,验证用户输入的账号和密码,跟服务器中存储的账号和密码是否相等

BOOL r4 = [s1 isEqualToString: s2];

NSLog(@"%d",r4);

      

       

5、字符串截取

从一个字符串中,根据指定的范围,获取新的字符串

NSString * s = @"wearefriden";

       

(1)从第一个字符开始截取到指定位置

参数:index从0开始,提取的内容不包含参数对应的字符

NSString * s1 = [s substringToIndex:3];

NSLog(@"%@",s1);

       

(2)从指定位置截取到最后一个字符

参数:index从0开始,提取的内容包含参数对应的字符

NSString * s2 = [s substringFromIndex:4 ];

NSLog(@"%@",s2);

       

(3)根据指定的范围截取(中间的某个位置)

location的参数包含对应的字符

NSRange range =NSMakeRange(7, 4);

NSString * s3 = [s substringWithRange:range];

NSLog(@"%@",s3);

       

6、字符串拼接、替换

NSString类型的对象是不可变的。故拼接和替换的本质:没有修改原来的字符串对象,而是返回一个新的字符串对象

 

(1)拼接

NSString * name =@"zhangsan";

NSString * address =@"fujianxiamen";

把address拼接到name之后

NSString * s1 =[name stringByAppendingString:address];

NSLog(@"%@",s1);

 

将格式化字符串@"%@zhangzhou"拼接到name和address之后      

NSString * s2 =[name stringByAppendingFormat:@"%@zhangzhou", address];

NSLog(@"%@",s2);

       

(2)替换

将address字符中的@"xiamen"替换为@"fuzhou"

NSString * s3 =[address stringByReplacingOccurrencesOfString:@"xiamen"withString:@"fuzhou"];

NSLog(@"%@",s3);

              

NSMutableString 可变字符串类

       

1、可变字符串对象可以修改自身,修改后没有返回值,还是它本身。

2、NSMutableString是NSString的子类,即可变字符串对象继承了NSString所有的方法。      

3、创建对象  没有返回值

NSMutableString * s1= [[NSMutableString alloc]init];

Setter方法设置字符串。

[s1 setString:@"hello"];

NSLog(@"%@",s1);

       

4、拼接   没有返回值

 [s1 appendString:@"world"];

NSLog(@"%@",s1);

       

5、插入

index参数为插入的字符的起始位置

 [s1 insertString:@"hero" atIndex:5];

NSLog(@"%@",s1);

      

6、替换

替换字符串的位置和长度,使用结构体range

NSRange range =NSMakeRange(5, 4);

 [s1 replaceCharactersInRange:rangewithString:@"king"];

NSLog(@"%@",s1);

 

7、NSString和NSMutableString方法的比较。    

NSString提供的拼接、替换方法,有返回值,以string开头

NSMutableString提供的拼接、替换、插入方法,无返回值,不以string开头。


8、字符串和基本数据类型的转换

NSString只能保存对象类型,故int类型需要转换为对象类型存储。


对象类型回转int类型方法:

将@“20”数字字符串,转换为对应的数值 20

NSString * s1 =@"20";//转换为int

int a = [s1 intValue];

NSLog(@"%d",a);



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值