不可变字符串NSString
1.字符串创建: 通过字面量的方法快速创建一个对象
<span style="font-size:18px;"> <strong>
NSString *str = @"稀罕";
NSLog(@"%@", str);
str = @"你好";</strong></span>
2.获取字符串长度: str.lengh
<pre name="code" class="objc"><span style="font-size:18px;"><strong> NSString *str = @"ajoajwoiw";
NSLog(@"%ld", str.length);</strong></span>
3.截取字符串
(1)substringFromIndex:从下标位置开始截取,包括下标位置,后面的内容都要
<span style="font-size:18px;"><strong>
NSString *str = @"aruwujkrktio";
NSString *newStr = [str substringFromIndex:5];
NSLog(@"%@", newStr);</strong></span>
(2)substringToIndex:从头开始,不包含下标截取
<span style="font-size:18px;"><strong>
newStr = [str substringToIndex:5];
NSLog(@"%@", newStr);</strong></span>
(3)substringWithRange:(NSRange)
NSRange是一个结构体,里面包含两部分内容,一个是location,就是范围的起始位置,另一个是length,截取的长度
<span style="font-size:18px;"><strong> NSRange range = {5, 5};
newStr = [str substringWithRange:range];
NSLog(@"%@", newStr);</strong></span>
可以用NSMakeRange直接写
newStr = [str substringWithRange:NSMakeRange(4, 3)];
<span style="font-size:18px;"><strong>
<span style="font-family: Arial, Helvetica, sans-serif;">newStr = [str substringWithRange:NSMakeRange(4, 3)];</span>
NSLog(@"%@",newStr);
</strong></span>
4.拼接字符串
(1)万能拼接法,能把任意类型转换成字符串
<span style="font-size:18px;"><strong>
NSString *newStr = [NSString stringWithFormat:@"%@%d%@", str, 12, @"ijrtajffgkl"]; // 将任意类型转换成字符串
NSLog(@"%@", newStr);
</strong></span>
5.字符串相等(主要判断内容是否相等)
<span style="font-size:18px;"><strong> NSString *str = @"张三";
NSString *str1 = @"张三";
BOOL result = [str isEqualToString:str1];
NSLog(@"%d", result);
</strong></span>
str1 == str2是判断地址是否相等
6.替换字符串
<span style="font-size:18px;"><strong>
NSString *str = @"床前明月光明";
NSString *newStr = [str stringByReplacingOccurrencesOfString:@"明" withString:@"你好"];
NSLog(@"%@", newStr);
<span style="font-family: Menlo;"> </span></strong></span>
7.字符串的前缀和后缀
<span style="font-size:18px;"><strong>
NSString *str = @"NSString";
BOOL result = [str hasPrefix:@"NS"];
NSLog(@"%d", result);
result = [str hasSuffix:@"ing"];
NSLog(@"%d", result);
</strong></span>
8.字符串的大小写
9.找到字符串中的数字: 如果字符串是"aaa111a",那么结果是0
<span style="font-size:18px;"><strong>
NSString *str = @"abcdefgABCDEFG";
NSLog(@"%@", str.uppercaseString);// 转换成大写
NSLog(@"%@", str.capitalizedString);// 首字母大写,其他小写
NSLog(@"%@", str.lowercaseString);// 转换成小写字母
</strong></span>
9.找到字符串中的数字: 如果字符串是"aaa111a",那么结果是0
<span style="font-size:18px;"><strong>
NSString *str1 = @"12aaa"; // 从第一个开始算,直到不再有数字了就结束
NSInteger a = str1.integerValue;
NSLog(@"%ld", a);
</strong></span>
10.判断前面的字符串是不是包含第二个字符串
<strong>
NSString *str2 = @"2";
BOOL result = [str1 containsString:str2];
NSLog(@"%d", result);
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"> </span></strong>
分辨可变和不可变字符串的方法:看返回值
1.比如替换方法等方法,返回值是NSString * 是不可变的字符串方法
2.返回值类型是void是可变的方法,可变的可以直接修改自身字符串的内容
可变字符串 NSMutableString:它是NSString的子类,拥有父类的特征还有行为
1.字符串的创建:字面量创建的字符串都是不可变的,所以可变字符串创建采用常规方式
<span style="font-size:18px;"><strong>
NSMutableString *str = [NSMutableString string];
// 有初值
NSMutableString *str1 = [NSMutableString stringWithString:@"你好"];
NSLog(@"%@", str1);
</strong></span>
2.插入字符串
<span style="font-size:18px;"><strong> NSMutableString *str = [NSMutableString stringWithString:@"151135"]; </strong></span>
<span style="font-size:18px;"><strong> [str insertString:@"DLS" atIndex:0];</strong></span>
<span style="font-size:18px;"><strong> NSLog(@"%@", str);
</strong></span>
如果操作不可变的字符串都会产生一个新的字符串,而且原字符串不变
<span style="font-size:18px;"><strong>
NSString *str = @"NIHAO";
NSString *newStr = [str stringByReplacingOccurrencesOfString:@"n" withString:@"G"];
NSLog(@"%@", str); // 输出结果是NIHAO
</strong></span>
3.可变字符串的拼接
<span style="font-size:18px;"><strong> [str appendString:@"123"];
NSLog(@"%@", str);</strong></span>
4.可变字符串的删除元素
<span style="font-size:18px;"><strong> [str deleteCharactersInRange:NSMakeRange(3, 2)];
NSLog(@"%@", str);
</strong></span>
5.可变字符串的替换
<span style="font-size:18px;"><strong>
[str replaceCharactersInRange:NSMakeRange(3, 3) withString:@"APP"];
NSLog(@"%@", str);
</strong></span>
NSNumber, NSValue:主要用于类型转换
1.NSNumber用于对象类型和基本数据类型的互相转换
NSNumber *number = @10;
NSNumber *num = [NSNumber numberWithInteger:100];
NSInteger a = [num integerValue];
NSLog(@"%ld", a);
NSRange range = {1, 3};
// NSRange -> NSValue
NSValue *value = [NSValue valueWithRange:range];
NSLog(@"%@", value);
// 转换回来
NSRange newRande = [value rangeValue];
练习题:给定一个图片名,判断字符串中是否以png结尾,如果是就替换成jpg,不是就拼接.jpg
NSString *str = @"saijt.jpg";
// 先计算长度
NSInteger length = str.length;
NSString *newStr = [str substringFromIndex:length - 3];
NSLog(@"%@",newStr);
if ([newStr isEqualToString:@"png"]) {
newStr = [str stringByReplacingOccurrencesOfString:@"png" withString:@"jpy"];
NSLog(@"%@", newStr);
} else if ([newStr isEqualToString:@"jpg"]){
NSLog(@"%@", str);
}else{
newStr = [str stringByAppendingString:@".jpg"];
NSLog(@"%@", newStr);
<span style="font-family: Arial, Helvetica, sans-serif;"> }</span>
练习题:判断年份并拼接
<span style="font-size:18px;"><strong>
NSString *date1 = @"2015-10-20";
NSString *date2 = @"2015-10-21";
NSString *date3 = [date1 substringToIndex:4];
NSString *date4 = [date2 substringToIndex:4];
if ([date3 isEqualToString:date4]) {
date2 = [date2 substringFromIndex:5];
NSString *newStr = [NSString stringWithFormat:@"%@ -- %@", date1, date2];
NSLog(@"%@", newStr);
}else{
NSString *newstr = [NSString stringWithFormat:@"%@ -- %@", date1, date2];
NSLog(@"%@", newstr);
}
</strong></span>