不可变字符串
创建不可变字符串
指令:NSString *student = @"杨林fnidsanifsnfiads";(字面量方法)
创建空字符串
指令:NSString *stu = [[NSString alloc] init];
1:获取字符串长度
指令NSLog(@"%ld", student.length);
2:获取指定位置的字符
指令:NSLog(@"%c",[student characterAtIndex:1]);
注意:如果在指定位置上的字符是汉字的话那么应该用%C(大写的C)来接收
3:截取字符串
(1)向后截取
指令: [str substringFromIndex:5];
注意:从地址为5的地方开始往后截取,直到最后(包括下标位置)
(2)向前截取
指令: [str substringToIndex:5];
注意:从地址为5的地方开始往前截取,直到最前(不包括下标)
(3)截取一段
先定义:NSRange range ={3, 7};(从下标为3的位置向后截取7个长度的字符)
指令:[str substringWithRange:range]
或者:[str substringWithRange:NSMakeRange(3, 7)]
注意:两种方法效果一样,第二种方法不用定义range直接填3和 7;
4:判断两个字符串内容是否一致
指令:[str1 isEqualToString:str2].
注意:该指令的头文件是BOOL类型,所以返回值只有1(YES)和0(NO),所以需要用%d来接收,
if (str1 == str2)比较两个字符串的地址是否相同;
5:判断字符串种是否有前缀后缀
(1)前缀
先定义:NSString *prefix = @"li";
指令:NSLog(@"%d", [str hasPrefix:prefix]);
(2)后缀
先定义:NSString *suffix = @"an"
指令:NSLog(@"%d", [str hasSuffix:suffix]);
注意:该指令的头文件是BOOL类型,所以返回值只有1(YES)和0(NO),所以需要用%d来接收,
6:把字符串转换成基本数据类型
指令:NSInteger num = [strNum(字符型) integerValue];
7:字符串拼接
指令:NSString *str =[NSString stringWithFormat:@"%ld(整形), %g(浮点型) %@(字符串)", a, g, @"刘山山"];
注意:该指令的实质是什么类型的都可以拼在一起(就是把任意类型转换成字符串类型,可以进行拼接)
8:大小写转换
(1)小写变大写
指令:NSLog(@"%@", str.uppercaseString);
(2)大写变小写
指令:NSLog(@"%@", str.lowercaseString);
(3)首字母变大写
指令:NSLog(@"%@", str.capitalizedString);
注意:让首字母变成大写(使用此方法时最好加空格,因为空格之后的第一个字母自动变成大写,原字符串当中的大写,但是前面没有空格的字母,均变成小写)
例如NSString *str = @"liuSHAN shan";
NSLog(@"%@", str.uppercaseString);
运行的结果为"LiuShan Shan"
9:字符串的比较
指令:NSLog(@"%ld", [str compare:newStr])
注意:该指令的运行之后只能得到1 -1 0三种结果, -1是ASC升序 0是same相同结果是0, 1是DESC降序;
10:字符串的拼接
指令:NSString *newStr = [str1 stringByAppendingString:str];(把str拼接在str1之后)
11:字符串替换
指令:[str stringByReplacingOccurrencesOfString:@"刘山山" withString:@"杨林"]
注意:把刘山山全部替换成杨林,有多少个替换多少个
后补:
1:判断字符串是否包含指定字符串,返回位置和长度
指令:NSRange range = [@"123456" rangeOfString:@"456"];
NSLog(@"%@", NSStringFromRange(range));
结果:{3, 3}
2:指定范围进行搜索
指令:NSRange range = NSMakeRange(0,9);
range = [@"123456456qweasasd456"rangeOfString:@"456"options:NSBackwardsSearchrange:range];
NSLog(@"%@",NSStringFromRange(range));
结果:{6, 3}
注意:在下标为6的位置出现456,并且长度为3
可变字符串
注意:NSMutableString:可变字符串,他是NSString的子类
创建方式
指令:NSMutableString *str = [[NSMutableString alloc] initWithString:@"腾飞"];
或者:NSMutableString *str1 =[NSMutableString stringWithString:@"商帅"];(便利构造器)
注意:使用字面量的方式创建的石不可变字符串,只能拿不可变的指针来接受,所以NSMutableString *str = @"杨凌";//错误因为"杨凌"不可变
12:字符串插入
指令:[str insertString:@"商帅" atIndex:5];
注意:(在str中下标为5的位置插入商帅二字,值是插入没有替换);
13字符串替换:
(1)范围替换
先定义:NSRange range = {3, 5};
指令:[str replaceCharactersInRange:range withString:@"WODE"];
注意:range{3, 5} 意思为从地址为3的地方向后的5个字符被WODE所替换
(2)全部替换
指令:[str setString:@"1"];
注意:"相当于重新赋值
14:字符串拼接(可变字符串)
指令:[str appendFormat:@"WODE"];(不可变字符串)
指令:[str1stringByAppendingString:@"WODE"];(可变字符串)
注意:这是可变字符串,该指令不能用在不可变字符串当中在str后面拼接上WODE
15:删除字符串:
指令:[str deleteCharactersInRange:NSMakeRange(3, 2)];
可变字符串在方法上一般都是没有返回值的,都是对自身的内容进行修改,在访问的时候字符换已经发生变化,但是不可变字符串会产生一个新的字符串,一般方法会返回NSString *
(自己):不可变就是必须得用一个新的字符串来接收产生的新的字符串,而可变的方法是改变原有的字符串