您的位置:首页 > 移动开发 > Objective-C

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

2015-09-12 14:37 627 查看
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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: