Foundation框架
框架是由许多类、方法、函数、文档按照一定的逻辑组织起来的集合,以便使研发程序变得更容易.
Foundation框架允许使用一些基本对象,如数字和字符串,以及一些对象集合,如数组,字典和集合,其他功能包括处理日期和时间、内存管理、处理文件系统、存储(或归档)对象、处理几何数据结构(如点和长方形)
显示隐藏文件 : defaults write com.apple.finder AppleShowAllFiles –bool true
隐藏隐藏文件 : defaults write com.apple.finder AppleShowAllFiles –bool false
---------------NSString的用法
1).直接创建方式:
NSString *str = @"abc";
2).格式化创建:
NSString *st2 = [NSString stringWithFormat:@"%@", @"jack"]; NSString *str = [[NSString alloc] initWithFormat:@"My age is %d", 10];
3).文本编码:
中文 :GBK(3个字节) GB2312(3个字节)
UTF - 8:国际通用编码(2个字节)
4). 字符串写入文件:
NSError *err;//错误对象
[str writeToFile:@"/Users/zhaoxiaohu/Desktop/" atomically:YES encoding:NSUTF8StringEncoding error:&err]; if (err != nil) { NSLog(@"写入失败!,%@",err); }else{ NSLog(@"写入成功"); }
5).字符串从文件读取:
NSError *err; NSString *str = [NSString stringWithContentsOfFile:@"/Users/zhaoxiaohu/Desktop/str.txt" encoding:NSUTF8StringEncoding error:&err]; if (err != nil) { NSLog(@"读取失败!,%@",err); }else{ NSLog(@"读取成功"); NSLog(@"%@",str); }
6).字符串比较函数:
NSComparisonResult result = [str1 compare:str2];
//比较的时候,不区分大小写,参考字符的个数进行比较
NSComparisonResult result = [str1 compare:str2 options:NSCaseInsensitiveSearch|NSNumericSearch];
返回值:
NSOrderedAscending(str1<str2)升序
NSOrderedDescending(str1>str2)降序
NSOrderedSame(str1 = str2)相等
NSString *str1 = @"abc"; // a 97 NSString *str2 = @"abc"; // A 65 //取出每个字符的ASCII码值 ,比较ASCII码值大小 //compare方法比较大小 //compare 默认的区分大小写的 //compare 这个函数,不能增加条件 NSComparisonResult result = [str1 compare:str2]; //比较的时候,不区分大小写,参考字符的个数 NSComparisonResult result = [str1 compare:str2 options:NSCaseInsensitiveSearch|NSNumericSearch]; switch (result) { case NSOrderedAscending: NSLog(@"str1 < str2 升序"); break; case NSOrderedDescending: NSLog(@"str1 > str2 降序"); break; case NSOrderedSame: NSLog(@"str1 == str2 "); break; default: break; }
7). 判读字符串是否相等:
NSString *str1 = @"abc";
NSString *str2 = @"abc";
str1 == str2 比较的是地址 (==比较的是字符串的地址)
[str1 isEqualToString:str3],比较的是内容,区分大小写(这个方法非常常用)
NSString *str1 = @"abc"; NSString *str2 = @"abc"; //地址的比较 // "==" 不能够判断字符串是否相等的 //判断字符串内容真正是否相等,使用是 //isEqualToString: //注意:他是区分大小写的 if ([str1 isEqualToString:str3]) { NSLog(@"相等"); }else{ NSLog(@"不相等"); }
8). 检测字符串前后缀:
NSString *url = @"http://asdfasdfasdfaasdfadsfaf";
[url hasPrefix:@"http://"]; 字符串是否以http:开头//检测前缀
NSString *imgName = @"logo.jpg";
[imgName hasSuffix:@".jpg"]; 检测字符串是否以.jpg结尾//检测后缀
NSString *url =@"http://sjhasfjkfsjfhskfsbbbbb"; if( [url hasPrefix:@"http"]){ NSLog(@"是网址"); if ([url hasSuffix:@".jpg"]) { NSLog(@"是图片"); }else{ NSLog(@"不是"); } }
9).查找字符串:
格式:
NSRange range = [str1 rangeofString:str2]; //str1 中找str2
NSString *url =@"http://sjhasfjkfsjfhskfsbbbbb"; //在一个字符串中查找另一个字符串出现的手位置 NSRange range = [str rangeOfString:@"sj"]; //NSNotFound 是一个最大的long 无符号数 //如果查找不到 range.location 是一个最大的long 无符号数 //range.location 表示字符串首次出现的位置 //range.length 表示子字符串的长度 if (range.location != NSNotFound) { NSLog(@"位置:%lu,长度:%lu",range.location,range.length); }else{ NSLog(@"没有查找到"); }
-----------------字符串的截取和替换
1,从指定位置from开始(包含起始位置)到尾部
- (NSString *)substringFromIndex:(NSUInteger)from;
2,从字符串的开头一直截取到指定的位置to,不包含结束位置
- (NSString *)substringToIndex:(NSUInteger)to;
3,按照所给出的NSRange从字符串中截取子串
- (NSString *)substringWithRange:(NSRange)range;
NSString *str = @"http://www.baidu.com"; //1) 从xx位置开始,到最后结束(包含xx这个位置的字符) NSString *str1 = [str substringFromIndex:5]; NSLog(@"str1 = %@",str1); //2) 从开始位置,到xx位置结束(不包含xx这个位置) NSString *str2 = [str substringToIndex:5]; NSLog(@"str2 = %@",str2); //3) 截取一个范围 range NSRange r1 = {3,4}; NSString *str3 = [str substringWithRange:r1]; NSLog(@"str3 = %@",str3);
4,字符串截取练习(获取itcast标签中的内容)
NSString *str = @"<itcast>乔布斯</itcast>"; // @">" loc+1 NSUInteger loc = [str rangeOfString:@">"].location + 1; //"传"得位置 // @"</" loc NSUInteger len = [str rangeOfString:@"</"].location - loc; //要截取的字符的长度 // 构建 ruange NSRange r2 = NSMakeRange(loc, len); // 截取 NSString *subStr = [str substringWithRange:r2];
NSLog(@"subStr = %@",subStr);
5,字符串替换
str stringByReplacingOccurrencesOfString:@"源字符串中的内容" withString:@"要替换成新的内容"
NSString *str =@"asdfsdafasdfdasdfsa"; //把a替换成 * NSString *newStr = [str stringByReplacingOccurrencesOfString:@"a" withString:@"*"]; NSLog(@"newStr = %@",newStr);
1、获取字符串的每个字符
- (NSUInteger)length; 返回字符串的长度(有多少个字符,无论中文字符、英文字符等等,一个字符就是一个字符)
- (unichar)characterAtIndex:(NSUInteger)index; 返回index位置对应的字符
NSString *str = @"ios.itcast.cn"; //1、获取字符串的长度 //调用字符串的length方法 //str.length ----> [str length]; NSLog(@"%ld",str.length); //2、获取字符的每一个字符 unsigned long len = str.length; for (int i=0; i<len; i++) { unichar c = [str characterAtIndex:i]; printf("%c ",c); }
三,字符串和其他数据类型转换
1,和基本数据类型的转换
- (double)doubleValue;
- (float)floatValue;
- (int)intValue;
- (BOOL)boolValue;
NSString *s1 = @"12"; //12+2 // s1+2; NSString *s2 = @"2.3"; NSString *s3 = @"345.678"; //把字符串转换为 int类型 int n1 = [s1 intValue]; NSLog(@"n1 = %d",n1*34); //字符串转换为float float f1 = [s2 floatValue]; NSLog(@"f1 = %f",f1+3); //把字符串转换为double类型 double d1 = [s3 doubleValue]; NSLog(@"d1 = %f",d1+3);
2,C字符串转OC 字符串
char *s = "zhangsanfeng"; NSString *str = [NSString stringWithUTF8String:s];
3,OC字符串转C字符串
NSString *str2 = @"zbz"; const char *s1 = [str2 UTF8String];
4,去除字符串首尾的空格
NSString *str = @" itc ast "; NSCharacterSet *set =[NSCharacterSet whitespaceCharacterSet]; NSString *newStr = [str stringByTrimmingCharactersInSet:set];
四,通过NSURL读写字符串
1,URL介绍
URL的全称是Uniform Resource Locator(统一资源定位符).
URL是互联网上标准资源的地址.
2,URL格式
基本URL包含:协议、主机域名(服务器名称\IP地址)、路径
举例: http://ios.itcast.cn/ios/images/content_25.jpg
可以简单认为: URL == 协议头://主机域名/路径
3,通过URL读写字符串
构建URL
NSURL *url = [NSURL URLWithString:@"file:///Users/apple/Desktop/str.txt"];//需要手动加file://协议头
通过文件路径创建(默认就是file协议的)
NSURL *url = [NSURL fileURLWithPath:@"/Users/apple/Desktop/str.txt"];//自动会将file://协议头加上
NSString *str = @"$10000000";
1),写入字符串
[str writeToURL:url atomically:YES encoding:NSUTF8StringEncoding error:nil]
2),读取字符串
NSString *str2 = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
五,NSMutableString的介绍和使用
1, NSMutableString类继承NSString类
2,NSMutableString和NSString的区别:
NSString是不可变的, 里面的文字内容是不能进行修改的;
NSMutableString是可变的, 里面的文字内容可以随时更改;
NSMutableString能使用NSString的所有方法.(继承)
3, 可变和不可变的概念:
不可变: 指的是字符串在内存中占用的存储空间固定,并且存储的内容不能发生变化;
可变: 指的是字符串在内存中占用的存储空间可以不固定,并且存储的内容可以被修改;
4,使用:
NSMutableString *str2 = [NSMutableString stringWithFormat:@"Jack"];
1),添加:
[str2 appendString:@"&Rose"];//追加 [str appendFormat:@"http://www.baidu.com/%d",100];//格式化的添加字符串
2),在指定的位置插入一个字符串:
[str insertString:@"p://" atIndex:3];
3),删除一部分字符串:
[str deleteCharactersInRange:NSMakeRange(3, 4)];
4),替换字符串的一部分内容
[str replaceCharactersInRange:NSMakeRange(11, 5) withString:@"itcast"];
使用注意:
1),不能将不可变的字符串赋值给可变的字符串;
NSMutableString *str = [NSString stringWithFormat:@"abc"];