基本数据类型
NSRange
是一个结构体,里面有两个数据成员数据类型都为NSUInteger 就是c语言中的无符号整形,一个是location表示集合的起始地址,另外一个变量是length表示从起始地址开始算多少个元素。
NSRange的三种创建方式
//1.NSRange range;range.length = 10;range.location=3;//2.NSRange rang1 = {1,2};//3.NSRange rang2 = NSMakeRange(1, 7);
NSRange的一些方法
将NSRange转化为NSString类型
//快速打印rangeNSString *str = NSStringFromRange(range);NSLog(@"%@",str);
NSPoint
NSPoint其实就是CGPoint
NSPoint创建方式
跟NSRange一样,也是三种方法
NSPoint p;p.x = 10;p.y = 10;NSPoint p3 = {3,2};NSPoint p2 = NSMakePoint(2, 3);
NSPoint的一些方法
将NSPoint转为NSString
NSString *str = NSStringFromPoint(p);NSLog(@"%@",str);
NSSize
本质就是CGSize,NSSize就是一个结构体,两个成员高度height,宽度width
NSSize的使用
void size(){NSSize size;size.width = 100;size.height = 90;size = NSMakeSize(3, 4);NSString *str = NSStringFromSize(size);NSLog(@"%@",str);
}
NSRect
NSRect是一个结构体,这个结构体两个成员一个是NSPoint另外一个是NSSize;
NSRect的使用
NSRect rect;rect.origin.x = 10;rect.origin.y = 20;rect.origin = NSMakePoint(10, 33);rect.size = NSMakeSize(12, 30);rect = NSMakeRect(10, 20, 30, 40);NSLog(@"%@",NSStringFromRect(rect));
基本容器
NSString
与C++中String类的功能很像,NSString是OC中存储字符串类型的一种容器,但是NSString内容是不可变的
NSString 的实例的创建
动态方法创建
NSSting实例的创建有很多种方式
- 直接赋值一个字符串,此时字符串为常量字符串
- 分配空间再进行初始化,此时还没有赋值默认为nil,需要对其进行赋值操作
- 分配空间时进行有参数的构造
- 用c语言格式字符串对NSString进行初始化
- 带有格式化参数对NSString进行赋值操作
//这中方式创建是常量字符串NSString *str1 = @"A String";//先分配空间再进行初始化NSString *str2 = [[NSString alloc] init];str2 = @"A String";//分配空间后进行带有参数的构造NSString *str3 = [[NSString alloc] initWithString:@"A string"];//分配空间后将char类型的的字符串转为NSString类型进行构造NSString *str4 = [[NSString alloc] initWithUTF8String:"A string"];str4 = [NSString stringWithUTF8String:"LOUE"];//带有格式化参数的初始化NSString * str5 = [[NSString alloc] initWithFormat:@"my age is %i and my height is %.2f ",19,1.22]; NSLog(@"str5 = %@",str5);
静态方法创建
除了用动态方法可以创建字符串实例外,动态方法也可以创建字符串实例。
基本就是将init替换成string,其余都基本一样
//string with开头为静态方法,作用与相应的initWith开头的动态方法一样
str3 = [NSString stringWithString:@"LOUE"];
文件操作
读取文件内容
指定字符集为UTF-8
//从文件中读取文本NSString *path = @"/Users/bytedance/Desktop/1.txt";NSString *str1 = [NSString stringWithContentsOfFile: path encoding:NSUTF8StringEncoding error:nil];NSLog(@"str1 = %@",str1);
如果想要指定字符集为GBK的话,需要进行类型的转化
写入文件内容
//将字符串导出到文件
void stringCreate3(){NSString *str1 = @"啦啦啦啦啦啦啦";NSString *path = @"/Users/bytedance/Desktp/1.txt";NSError *error;//第二参数如果是yes,则先创建一个临时文件将数据写入临时文件,如果中途出错,则不写入目标文件//如果文件不存在则会帮忙创建//如果文件夹布村则会报错//覆盖掉原来文件内容[str1 writeToFile: path atomically:YES encoding:NSUTF8StringEncoding error:&error];if(error){//写入失败NSLog(@"写入失败 %@" ,[error localizedDescription]);}else {NSLog(@"写入成功");}
}
NSString中的一些实例方法
大小写处理
- uppercaseString
- lowercaseString
- capitalizedString
void stringCreate4(){NSString *str = @"GuangDong";//转成大写NSLog(@"大写 : %@",[str uppercaseString]);//转成小写NSLog(@"小写 : %@",[str lowercaseString]);//首字母变大写,其他字母变小写NSLog(@"is %@",[str capitalizedString]);
}
字符串比较
- isEqualToString 比较字符串内容是否相等,不忽略大小写
- 按字典顺序比较字符串compare,不忽略大小写
- caseInsensitiveCompare,忽略大小写
void stringCreate5(){//字符串比较//检测字符串内容是否相同BOOL res = [@"abc" isEqualToString:@"ABc"];NSLog(@"%i",res);//右边比左边大为升序//左边比右边大为降序//一样大为相等//按字典序比较字符串大小//返回值为枚举类型NSComparisonResult res1 = [@"abc"compare:@"Abc"];if(res1 == NSOrderedSame){NSLog(@"一样大");}else if(res1 == NSOrderedAscending){NSLog(@"右边比左边大");}else {NSLog(@"左边比右边大");}//忽略大小写进行比较NSComparisonResult res2 = [@"abc" caseInsensitiveCompare:@"ABc"];if(res2 == NSOrderedSame){NSLog(@"一样大");}else if(res2 == NSOrderedAscending){NSLog(@"右边比左边大");}else {NSLog(@"左边比右边大");}
}
字符串搜索
- hasPrefix 判断字符串是否以某个前缀开头
- hasSuffix判断字符串是否以某个后缀结尾
- rangOfString查找字符串
NSString *p = @"123455.3333xddd";//判断字符串是否以某个前缀开头NSLog(@"p is %i",[p hasPrefix:@"12"]);//判断字符串是否以某个后缀结尾NSLog(@"p is %i",[p hasSuffix:@"ddd"]);//查找字符串中是否包含某个字符串//找到返回在p中的起始位置,和长度是以结构体的形式返回,需要转换为字符串进行输出//如果不存在长度返回的是0,起始位置是一个long类型的最大值NSRange range = [p rangeOfString:@"345"];if(range.location == NSNotFound || range.length == 0){NSLog(@"找不到");}else{NSLog(@"找到");}//反向搜索NSRange range1 = [p rangeOfString:@"455" options:NSBackwardsSearch];if(range1.location == NSNotFound ){NSLog(@"找不到");}else{NSLog(@"找到");}//指定范围搜索NSRange s;s.location = 8;s.length =4;NSRange range2 = [p rangeOfString:@"455" options:NSBackwardsSearch range:s];
字符串的截取
- substringFromIndex从索引位置截取到末尾
- substringToIndex 从开始位置截取到索引位置之前
- componentsSeparatedByString切割字符串
void stringCreate7(){NSString *str = @"123456";//从索引3开始截取到尾部NSLog(@"%@",[str substringFromIndex:3]);//从头部开始截取到某个索引位置,不包括索引NSLog(@"%@",[str substringToIndex:4]);//截取范围内的字符串NSRange s;s.location =2;s.length = 3;NSLog(@"%@",[str substringWithRange:s]);//切割字符串NSString *str2 = @"1,2,3,4,5";//以,进行分割NSArray *array = [str2 componentsSeparatedByString:@","];//%@默认调用对象的decribtion方法打印对象中的所有元素NSLog(@"%@",array);
}
NSString与路径
- pathWithComponents 将数组中的元素拼接成一个路径
- 把一个路径分解成数组 pathComponents
- isAbsolutePath判断是否为绝对路径
- lastPathComponent返回最后一个文件夹的名称
- stringByDeletingLastPathComponent删除最后一个文件夹
- stringByAppendingPathComponent最后拼接一个目录
void stringCreate8(){//与路径相关的API//快速创建一个自动释放的数组NSMutableArray* compoments = [NSMutableArray array];[compoments addObject:@"ABC"];[compoments addObject:@"Deecc"];[compoments addObject:@"Kooo"];NSString *path = [NSString pathWithComponents:compoments];NSLog(@"%@",path);//把一个路径分解成数组NSArray * array = [path pathComponents];NSLog(@"%@",array);//判断是否为绝对路径path = @"users/mj/test";//path的值一直没有变,改变的都是返回值NSLog(@"%i",[path isAbsolutePath]);//返回最后一个文件夹名NSLog(@"最后一个文件夹名%@",[path lastPathComponent]);//删除最后一个文件夹NSLog(@"%@",[path stringByDeletingLastPathComponent]);//最后拼接一个目录NSLog(@"%@",[path stringByAppendingPathComponent:@"abc"]);}
与拓展名相关
- pathExtension 获取拓展名
- stringByDeletingPathExtension 删除拓展名
- stringByAppendingPathExtension 拼接拓展名
void stringCreate9()
{//删除拓展名NSString *str = @"/User/M3/test.txt";NSLog(@"拓展名:%@",[str pathExtension]);NSLog(@"%@",[str stringByDeletingPathExtension]);//拼接拓展名NSLog(@"%@",[@"abc" stringByAppendingPathExtension:@"mp3"]);
}
与基础数据类型有关
- intValue将字符串转为整数
- length统计字符串的个数
- 取出对应索引位置的字符characterAtIndex
- UTF8String 将NSString转为c语言中char
void stringCreate10(){NSString *str = @"100";int a = [str intValue];NSLog(@"%i",a);//计算字数并不是字符数,一个中文占两个字符但只计为1NSLog(@"length = %zi",[@"我是字符串123"length]);// 取出对应索引位置的字符unichar c = [@"abc" characterAtIndex:0];NSLog(@"%c",c);//转划为c语言中的charchar *s = [@"abc" UTF8String];NSLog(@"%s",s);
}
NSMutableString
OS中的可变字符串类型,NSMutableString是NSString的子类,所以NSString的方法,NSMutableString都可以用
NSMutableString的实例化
- 动态方法 initWithcapacity:空间大小
- 静态方法 stringWithCapacity
//预先分配10个字符的存储空间NSMutableString *str = [[NSMutableString alloc] initWithCapacity:10];NSMutableString *str2 = [NSMutableString stringWithCapacity:10];
NSMutableString的一些实例化方法
- appendString拼接一个字符串
- appendFormat拼接一个格式化的字符串
- replaceCharactersInRange替换字符串
- insertString插入字符串
- deleteCharactersInRange删除字符串
//拼接一个字符串[str appendString:@"567"];[str appendFormat:@"age is %i and height is %.2f ",27,1.55];//替换字符串//查到age的范围NSRange range = [str rangeOfString:@"age"];[str replaceCharactersInRange:range withString:@"no"];//插入字符串[str insertString:@"abc" atIndex:2];NSLog(@"%@",str);//删除字符串range = [str rangeOfString:@"abc"];[str deleteCharactersInRange:range];