1、NSString的一些创建和应用
1、OC中专门描述字符串类型的一个类
2、可重复使用
3、字符串一旦创建就不可改变(能改,但是不是改当前str对象了)
是一个对象,对象是可以用alloc创建的:
NSString *str = [[NSString alloc]init];
这是一个创建对象的方法,但是是一个空值,我们需要一个对象都是要使用的,那么空值的话将毫无意义(但是你可以赋值啊)
2、创建的时候直接赋值
NSString *str2 = @"helloWorld!";
创建的时候就直接赋值了
NSString *str3 = [[NSString alloc]initWithString:@"helloWorld!"];
字符串创建的时候如果内容一样的话那么且已存在,那么不会创建新的字符串,内存空间是一样的!这是想相当于两个对象指向一个内存空间
NSLog(@"str:%p,str2:%@",str2,str3);
自行输出一下就可以看的出来
3、这个占位符方法创建的字符串就算内容相同地址也不一样,这种方法一般适用于字符串拼接
NSString *str4 = [[NSString alloc]initWithFormat:@"%@",str2];
这时候NSLog输出一下的话会发现内容和str3内容一样,但是内存空间不一样了
NSString *str5 = [[NSString alloc]initWithFormat:@"%@,%@",str2,str3];
这就相当于拼接,如果你有注意的话会发现这其实和NSLog写法没什么差别,如何使用就自行发挥脑洞了
4、以文件中的内容创建一个字符串,例如保存在桌面的一个文本文件
NSString *str6 = [NSString stringWithContentsOfFile:@"/Users/Winter/Desktop/test" usedEncoding:NSUTF8StringEncoding error:nil];
文件路径最后需要带上test这个文件名,默认使用UTF-8的的编码也是常用的(例如有中文或者其他语言等),后面的error是我们程序读取错误时该怎么处理,一般也是不会有问题所以我直接写了nil,严谨来说是需要注意的
NSString *str7 = [NSString stringWithContentsOfURL:@"www.baidu.com" encoding:NSUTF8StringEncoding error:nil];
还一个以网页的内容设置为str的,和本地文件方法类似,当然百度是不可以的,原谅我懒
NSString的一些使用方法:
1、判断字符串是否相同,不是判断地址而是内容,如果返回的是YES就是相同
BOOL isEqual = [str2 isEqualToString:str3];
2、比较字符串的大小
NSComparisonResult steCr = [str2 compare:str3];
NSOrderedSame = 0 即是相同的
NSOrderedAscending = -1 是后者比前者大
NSOrderedDescending = 1 是前者比后者大
if (strCr == NSOrderedSame) {
NSLog(@"他们是相等的");
}else if (strCr == NSOrderedAscending)
{
NSLog(@"后者比前者大");
}else
{
NSLog(@"前者比后者大");
}
2、NSMutableString可变字符串
NSMutableString的创建
NSMutableString *str8 = [[NSMutableString alloc]init];
这时候创建一个空值的str就是有意义的了,因为我们创建的是一个可变string
NSMutableString *str9 = @"HelloWorld";
这是毫无意义的,虽然代码输入时不会报错,但是在执行修改的时候系统就会报错
NSMutableString *str10 = [NSMutableString stringWithString:@"HelloWorld"];
而这时候的创建可变的string赋值是可行的,而每次的创建都是新的地址
NSMutableString的增删改查
1、增加
NSMutableString *str10 = [NSMutableString stringWithString:@"HelloWorld"];
[str10 insertString:@"My" atIndex:5];
NSLog(@"str10:%@",str10);
这句话的意思是在str10字符串里第5个位置开始插入了“My”,这时候输出将会得到“HelloMyWorld”
string的下标是从0开始计算的!
[str10 appendString:@"asd"];
这是在str10后面追加“asd”
[str10 appendFormat:@"123%@abc",@"end"];
指定格式追加“end”,当然你也可以追加一个string对象也是可以的
2、修改
NSRange rage = {1,3};//1是位置,3是长度
[str10 replaceCharactersInRange:rage withString:@"ace"];
从1的位置起3个长度单位替换成“ace”
3、删除
NSMutableString *str10 = [NSMutableString stringWithString:@"HelloWorld"];
NSRange rage = {1,3};//1是位置,3是长度
[str10 deleteCharactersInRange:rage];
从1的位置开始3个长度删除,删除后的string后面的位置会自动补齐到前面会得出一个“HoWorld”
4、查
NSLog(@"str10:%@",str10);
皮一下是会很开心的!
4.1、字符串的截取,或者也可以理解查吧
NSMutableString *str10 = [NSMutableString stringWithString:@"HelloWorld"];
[str10 substringFromIndex:2];
这是从2下标位置到最后,因为我们只给了开始位置
NSString *str11 = [str10 substringFromIndex:2];
字符串截取的还是字符串,如果后续还有操作那就设置成NSMutableString
NSString *str12 = [str10 substringToIndex:3];
这是到哪个位置的截取(不包含指定位置),默认从0开始,也就是0,1,2的位置
NSRange rage2 = {1,3};
NSString *str13 = [str10 substringWithRange:rage2];
这时候有了个range,说明也就是指定位置了,从1的位置到3的位置!
5、字符串大小写改变
[str10 uppercaseString];
这是将字符串的字母内容全部改为大写
[str10 lowercaseString];
这是将所有字符串的字母改为小写
[str10 capitalizedString];
这是将字符串头字母改为大写
是否有某字符的开头或者结尾
BOOL kaitou = [str10 hasPrefix:@"kaitou"];
BOOL jiewei = [str10 hasSuffix:@"jiewei"];
这是的判断语句,返回的是一个BOOL值
网友评论