我的iOS学习历程 - OC第四天
今天主要说的是不可变字符串以及可变字符串的系统方法的调用和作用(配套练习题以及源代码下载页面)
main函数
#import <Foundation/Foundation.h>
int main(int argc,constchar * argv[]) {
#pragma mark -- 字符串
学习系统类
1.利用系统的类初始化对象出来
NSString *str = @"123"; // 自定义初始化方法 NSString *str = [[NSString alloc]initWithFormat:@"王龙-%@",@"18岁"]; NSLog(@"%@",str); // 便利构造器方法 NSString *str1 = [NSString stringWithFormat:@"adcarry-%@",@"伊泽瑞尔"]; NSLog(@"%@",str1);
2.利用创建出的对象调用系统方法
获取字符串长度
NSString *str = [NSString stringWithFormat:@"adcarry-%@",@"卡莉斯塔"]; NSUInteger length = [str length]; NSLog(@"%lu",length);// 从1开始数
获取子字符串(子字符串)
按范围截取字符串(从哪切,切多少)
NSRange range = NSMakeRange(8, 4); NSString *strNew = [str substringWithRange:range]; NSLog(@"%@",strNew);按索引截取
从索引处开始截取截取到结束(从哪里开始切)
NSString *strNew = [str substringFromIndex:3]; NSLog(@"%@",strNew); // 从头开始到索引处 (切到哪里) NSString *strNew2 = [str substringToIndex:7]; NSLog(@"%@",strNew2);
字符串拼接
NSString *strNew = [str stringByAppendingString:@"+河流之主"]; NSLog(@"%@",strNew);
格式化拼接
NSString *strNew2 = [str stringByAppendingFormat:@"+河流之主-%@",@"塔姆"]; NSLog(@"%@",strNew2);字符串替换
前面的给替换成后面的
NSString *strNew =[str stringByReplacingOccurrencesOfString:@"卡莉斯塔" withString:@"伊泽瑞尔"]; NSLog(@"%@",strNew); NSRange range = NSMakeRange(8, 4); NSString *strNew1 = [str stringByReplacingCharactersInRange:range withString:@"金克斯"]; NSLog(@"%@",strNew1);判断字符串相等
NSString *str1 = @"adcarry-卡莉斯塔"; BOOL result = [str isEqualToString:str1]; NSLog(@"%d",result);<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"> </span>
判断前缀后缀
BOOL result = [str hasPrefix:@"adcarry"]; BOOL result1 = [str hasSuffix:@"卡莉斯塔"]; NSLog(@"%d",result); NSLog(@"%d",result1);
字符串比较
NSString *str1 = @"abc"; NSString *str2 = @"acc"; NSComparisonResult result = [str1 compare:str2]; NSLog(@"%ld",result);字符串大小写转换
NSString *str = @"how are you"; NSString *strNew = [str uppercaseString]; NSLog(@"%@",strNew);全部转小写
NSString *str2 = [strNew lowercaseString]; NSLog(@"%@",str2);首字母大写
NSString *str3 = [str2 capitalizedString]; NSLog(@"%@",str3);
练习题:给定一个图片文件名,判断字符串中是否以“png”结尾,如果是就替换成“jpg”,如果不是,就拼接”.jpg”
NSString *imageName = @"haha"; // oc里NULL用nil来代替 BOOL result = [imageName hasSuffix:@"png"]; if (result) { imageName = [imageName stringByReplacingOccurrencesOfString:@"png" withString:@"jpg"]; } else{ imageName = [imageName stringByAppendingString:@".jpg"]; } NSLog(@"%@",imageName);
不可变字符串 NSString
不可变字符串如果重新赋值改变的不是其本身这个字符串而是进行了重指向指向了一个新的字符串
NSString *str = @"王龙"; str = @"壮壮"; NSLog(@"%@",str);
可变字符串 NSMutableString
相当于指向常量区
NSString *strs = @"sgr";可变字符串 NSMutableString进行初始化
NSMutableString *str = [[NSMutableString alloc] initWithString:@"sugar"];
便利构造器
NSMutableString *str1 = [NSMutableStringstringWithString:@"sugar"];
拼接字符串(特点肯定是没有返回值的,因为是可变字符串操作的是字符串本身)
插入字符
替换字符
删除字符
[str1 appendString:@" yes please"]; NSLog(@"%@",str1); [str1 insertString:@"comingback" atIndex:5]; NSLog(@"%@",str1); NSRange range = NSMakeRange(8, 3); [str1 replaceCharactersInRange:range withString:@"e"]; NSLog(@"%@",str1); NSRange range1 = NSMakeRange(5, 8); [str1 deleteCharactersInRange:range1]; NSLog(@"%@",str1);
练习题:给定一个图片文件名,判断字符串中是否以“png”结尾,如果是就替换成“jpg”,如果不是,就拼接”.jpg”
BOOL result = [str1hasSuffix:@"png"]; if (result) { NSInteger count = [str1length]; NSRange range =NSMakeRange(count -3,3); [str1 stringByReplacingCharactersInRange:rangewithString:@"jpg"]; } else{ [str1 appendString:@".jpg"]; } NSLog(@"%@",str1); return0; }
可变数组和不可变数组的调用
1.数组:存储的必须是对象类型
NSArray 不可变数组
不可变数组切记不可以进行增删
NSArray *array = [[NSArray alloc]initWithObjects:@"王龙",@"壮壮",@"薇恩", nil]; NSArray *array1 = [NSArray arrayWithObjects:@"艾弗森",@"韦德",@"科比", nil]; // 语法糖 NSArray *array2 = @[@"艾弗森",@"韦德",@"科比"]; // 获取一下元素的个数 NSUInteger a = [array2 count]; NSLog(@"%lu",a); NSLog(@"%@",array2[0]); // 打印数组的所有元素 for (int i = 0; i < [array2 count]; i++) { NSLog(@"%@",array2[i]); } // 获取数组的第一个元素 // 获取数组的最后一个元素 NSLog(@"%@",[array2 firstObject]); NSLog(@"%@",[array2 lastObject]);
可变数组 NSMutableArray
1.初始化可变数组
用类方法初始话一个空的数组
切记:使用可变数组的时候必须要进行初始化才能添加数据
NSMutableArray *array = [NSMutableArray array]; // 添加两个字符串进数组 [array addObject:@"保罗"]; [array addObject:@"格里芬"]; NSLog(@"%lu",[array count]); // 按照索引删除一个元素 [array removeObjectAtIndex:0]; NSLog(@"%lu",[array count]); // 添加一个元素 [array addObject:@"格里芬"]; // 在保罗和格里芬之间添加一个小乔丹 [array insertObject:@"小乔丹" atIndex:1]; NSLog(@"%@",array[1]);
数值对象类
可以把基本数据类型转化成对象类型
把整形转化成 NSNumber对象类型
<span style="font-size:18px;">NSNumber *number = [NSNumber numberWithInt:5]; NSNumber *number1 = [NSNumber numberWithFloat:10.5];</span>
把对象类型转化成基本数据类型
int value = [number intValue]; float value1 = [number1 floatValue];NSValue类
可以把结构体转化成对象类型
NSRange range =NSMakeRange(2,3); NSValue *sss = [NSValuevalueWithRange:range]; NSLog(@"%@",sss);