1. NSString字符串比较
void test(){
NSString *str = @"ccd"; // 3
NSString *str2 = @"bcde";// 4
//比较两个字符串大小:
//比较每个字符的ascii码值
//compare 比较字符串
//str > str2 1
// < -1
// == 0
// NSComparisonResult result = [str compare:str2];
//指定条件的字符串比较
//NSCaseInsensitiveSearch 不区分大小写
//默认的区分大小写
// result = [str compare:str2 options:NSCaseInsensitiveSearch];
//按照字符的个数进行比较
NSComparisonResult result = [str compare:str2 options:NSNumericSearch];
switch (result) {
case NSOrderedAscending:
NSLog(@"str < str2");
break;
case NSOrderedSame:
NSLog(@"str == str2");
break;
case NSOrderedDescending:
NSLog(@"str > str2");
break;
default:
break;
}
//OC中字符串比较的时候,可以加条件 区分大小写 字符的个数
}
2. NSString前后缀检查及搜索
void test(){
NSString *url = @"http://asdfasdfasdfaasdfadsfaf";
//判断这个地址,是否是一个网址
//1、 hasPerfix 检查字符串是否以另外一个字符串开头
if([url hasPrefix:@"http://"]){
NSLog(@"这是一个网址");
}else{
NSLog(@"这不是一个网址");
}
//2、检查后缀
// 需求,检查是否是一张图片 jpg png jpeg
// 先检是否是一个png的图片
NSString *str = @"logo.txt"; //logopng
if([str hasSuffix:@".png"]||[str hasSuffix:@".jpg"]||[str hasSuffix:@".jpeg"]){
NSLog(@"是图片");
}else {
NSLog(@"不是图片");
}
//字符串的查找
NSString *str = @"asitxcastdfafsadfxyz asdfasdfsadfa sadf";
// rangeOfString 作用是查找子字符串itcast在 str中第一次出现的位置
// 如果找能够查找到字符串,则返回子字符串的位置信息
// 如果查找不到,则返回的Range
// 位置 是一个特别大得数
// length 0
NSRange range = [str rangeOfString:@"itcast"];
//NSNotFound 是一个最大的long 无符号数
//如果查找不到 range.location 是一个最大的long 无符号数
if (range.location != NSNotFound) {
NSLog(@"位置:%ld,长度:%ld",range.location,range.length);
}else{
NSLog(@"没有查找到");
}
}
3. NSRange 的使用
/*
NSRange 是一个结构体
用来表示范围
有两个成员变量: location 表示范围的起始位置 length 表示范围的长度
NSRange的几种创建方式:
1)直接赋值
NSRange range1 = {2,5};
2)先定义后赋值
NSrange range2;
range2.location = 1;
range2.length = 23;
*/
//1)直接赋值
NSRange range1 = {2,5};
NSLog(@"loc = %ld,len = %ld",range1.location,range1.length);
//2)先定义后赋值
NSRange range2;
range2.location = 1;
range2.length = 23;
NSLog(@"loc = %ld,len = %ld",range2.location,range2.length);
//3)使用NSMakeRange创建一个NSRange类型的变量
NSRange range3 = NSMakeRange(45, 3);
NSLog(@"loc = %ld,len = %ld",range3.location,range3.length);
4. 字符串的截取和替换
void test(){
NSString *str = @"aaaaaaabbbbbbbccccccdddddd";
//从指定的位置出开始(包含此位置),到最后
//substringFromIndex
NSString *newStr = [str substringFromIndex:7];
//从起始位置开始,到指定位置(不包含指定位置)结束
newStr = [str substringToIndex:5];
//截取指定范围的字符串
NSString *dateStr = @"2015-01-29 12:12:30";
//获取日期
NSRange range = {0,10};
//获取时间
range = NSMakeRange(11, 8);
//获取指定范围的字符串
newStr = [dateStr substringWithRange:range];
NSLog(@"%@",newStr);
}
void test2(){
NSString *str = @"<imufeng>沐风科技</imufeng>";
unsigned long loc = [str rangeOfString:@">"].location+1;
unsigned long len = [str rangeOfString:@"</"].location - loc;
NSLog(@"%ld,%ld",loc,len);
NSRange range = {loc,len};
NSString *newStr = [str substringWithRange:range];
NSLog(@"newStr = %@",newStr);
}
void test3(){
//把imufeng --> ios
NSString *str = @"<imufeng>沐风科技</imufeng>";
//在str中 将所有的 imufeng 都替换成 ios
//str stringByReplacingOccurrencesOfString:@"imufeng" withString:@"ios"
NSString *newStr = [str stringByReplacingOccurrencesOfString:@"imufeng" withString:@"ios"];
//将http:**ios.imufeng.cn*ios*images*content_25.jpg中的*替换为/
str = @"http:**ios.imufeng.cn*ios*images*content_25.jpg";
newStr = [str stringByReplacingOccurrencesOfString:@"*" withString:@"/"];
//" http:** ios.imufeng.cn *ios*images* content_25.jpg " 的空格去掉,并且将*替换为/
str= @" http:** ios.imufeng.cn *ios*images* content_25.jpg ";
//先替换空格 空
str = [str stringByReplacingOccurrencesOfString:@" " withString:@""];
newStr = [str stringByReplacingOccurrencesOfString:@"*" withString:@"/"];
NSLog(@"%@",newStr);
}
5. 字符串的其他用法
/**
* 取出每一个字符
*/
void test1(){
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);
}
}
/**
* 字符串的转换问题
*/
void test2(){
int a = 23;
//把整形数据包装成字符串了
NSString *s0 = [NSString stringWithFormat:@"%d",a];
//字符串和基本数据类型转换问题
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);
//把OC的字符串对象转换为C语言的字符串
//@"xxxx" %@ "xxxxx" %s
NSString *s4 = @"helloworld";
const char *ss = [s4 UTF8String];
printf("%s\n",ss);
//把c的字符串转换为OC字符串对象
char ch[]="itcast";
NSString *ocStr = [NSString stringWithUTF8String:ch];
NSLog(@"%@",ocStr);
}
void test3(){
NSString *str = @" itc ast ";
//1、去除字符串首尾的空格
NSCharacterSet *set =[NSCharacterSet whitespaceCharacterSet];
NSString *newStr = [str stringByTrimmingCharactersInSet:set];
str= @"IOSitAcastIT";
//2、取出字符串的首尾大写字符
newStr = [str stringByTrimmingCharactersInSet:[NSCharacterSet uppercaseLetterCharacterSet]];
NSLog(@"-----%@-----",newStr);
}
6. NSMutableString
void test1(){
//不可变的字符串
NSString *str = @"Jack";
str = @"Rose";
//截取
NSString *newStr = [str substringToIndex:2];
NSLog(@"%@",newStr);
//可变字符串
//创建一个空字符串
NSMutableString *str2 = [NSMutableString string];
//给字符串追加内容
[str2 appendString:@"welcome"];
[str2 appendString:@" to"];
[str2 appendString:@" itcast!"];
NSLog(@"%@",str2);
}
/**
* 可变字符串的常用的方法
*/
void test2(){
//定义一个可变的字符串
//NSString 不可变
//NSMutableString 可变
NSMutableString *str = [NSMutableString string];
//追加字符串
[str appendString:@"xxxxx"];
int a = 10;
float f1 = 3.14;
char ch = 'x';
NSString *it = @"imufeng";
//格式化的追加字符串
[str appendFormat:@" a = %d, f1 = %.2f,ch = %c --->%@",a,f1,ch,it];
NSRange range = {5,5};
//删除指定范围的字符串
[str deleteCharactersInRange:range];
//增加字符串@“ios”到str字符串中
[str insertString:@"ios" atIndex:5];
//替换字符串
[str replaceCharactersInRange:range withString:@"zzzzz"];
//先查找再替换
//imufeng iosios
// 查找字符串
NSRange range2 = [str rangeOfString:@"imufeng"];
// 替换字符串
[str replaceCharactersInRange:range2 withString:@"iosios"];
NSLog(@"%@",str);
}
-(void)test3(){
//可变字符串易犯的错误
//1、给可变字符串赋值了常量
NSMutableString *str = @"xxxxx";
// [str appendString:@"imufeng"];
NSMutableString *str2 = [NSMutableString string];
[str2 appendString:@"imufeng"];
//2、通过string的属性,可以修改字符串的内容
str2.string = @"xxxxxx";
// str2 rangeOfString:<#(NSString *)#> options:0
NSLog(@"%@",str2);
}
7. NSArray 的介绍和基本使用
-(void)test {
//NSArray是OC中的数组类
//1、创建NSArray的方法
/*
+ (instancetype)array;
+ (instancetype)arrayWithObject:(id)anObject;
+ (instancetype)arrayWithObjects:(id)firstObj, ...;
+ (instancetype)arrayWithArray:(NSArray *)array;
+ (id)arrayWithContentsOfFile:(NSString *)path; // 读取一个xml文件.
+ (id)arrayWithContentsOfURL:(NSURL *)url; // 读取一个xml文件.
*/
//数组的最后一个值,我们默认的初始化为nil,nil表示数组结束了
NSArray *array1 = [NSArray arrayWithObjects:@"1",@"2",nil,@"3",nil];
//使用一个已经存在的数组,创建另外一个数组
NSArray *arr2 = [NSArray arrayWithArray:array1];
NSLog(@"%@,%@",array1,arr2);
NSArray *arr3 = [[NSArray alloc] initWithObjects:@"one",@"two",@"four", nil];
// NSLog(@"%@",array1[2]);
NSLog(@"%@",arr3);
//创建一个空数组
NSArray *arr4 = [NSArray array];
NSLog(@"%@",arr4);
}
8. NSArray 读写文件
void test(){
//定义一个数组
NSArray *arr = @[@"1",@"2",@"3",@"4",@"5",@"six",@"seven",@"8"];
//把数组的内容保存到文件中
//1)路径 2)原子性 3)编码 4)错误
// writeToFile
// .plist 是一个什么文件,它使一个资源文件
BOOL isSuccess = [arr writeToFile:@"/Users/apple/Desktop/arr.xml" atomically:YES];
if (isSuccess) {
NSLog(@"写入成功!");
}
}
// 2、从文件中读取数据,并且放到数组中
-(void)test2(){
// 1)路径 2)类方法
NSArray *arr2 = [NSArray arrayWithContentsOfFile:@"/Users/apple/Desktop/arr.xml"];
NSLog(@"arr2 = %@",arr2);
}
9. NSArray 与字符串
/**
* 把数组元素连接成一个字符串
*/
void test(){
//定义一个数组
NSArray *arr = @[@"1",@"2",@"3",@"4",@"5",@"six",@"seven",@"8"];
//componentsJoinedByString 方法的作用是把数组元素连成一个字符串
//连接字符串的时候,还可以指定元素和元素之间的分隔符
NSString *str = [arr componentsJoinedByString:@"-"];
NSLog(@"%@",str);
}
void test2(){
//@"400-517-517"
NSString *tel = @"400-517-517";
//componentsSeparatedByString
//把tel这个字符串 ,用 - 做分隔
//把分隔后的每一部分存放到数组中
NSArray *arr = [tel componentsSeparatedByString:@"-"];
NSLog(@"%@",arr);
}
10. NSMutableArray及基本使用
-(void)test{
//NSMutableArray 创建方法
//********** 数组的创建方法 ************
//1、可以创建空数组
NSMutableArray *arr = [NSMutableArray array];
//定义一个长度为5的数组
NSMutableArray *arr2 = [[NSMutableArray alloc] initWithCapacity:5];
//2、可以调用类方法,创建数组
NSMutableArray *arr3 = [NSMutableArray arrayWithObjects:@"1",@"two",@"3", nil];
//3、可以调用对象方法,创建数组
NSMutableArray *arr4 = [[NSMutableArray alloc] initWithObjects:@"1",@"3", nil];
NSArray *array = @[@"1",@"10",@"100",@"1000"];
//********* 数组的使用 ***********
// 1、可以向数组添加元素
[arr addObject:@"one"];
[arr addObject:@"one"];
[arr addObject:@"one"];
[arr addObject:@"one"];
// 把另外一个数组,整体添加到数组中
[arr2 addObjectsFromArray:array];
// 2、计算数组的长度
NSUInteger len = arr.count;
// 3、插入一个元素在指定的位置
[arr insertObject:@"1" atIndex:2];
// 4、删除最后一个元素
[arr removeLastObject]; //删除最后一个元素
[arr removeObject:@"1"]; //删除指定元素
// 5、替换元素
//[arr replaceObjectAtIndex:1 withObject:@"two"];
arr[1] = @"two";
// 6、交换元素
[arr exchangeObjectAtIndex:0 withObjectAtIndex:1];
//NSMutableArray 错误用法
// NSMutableArray *arr8 = @[@"one",@"two"];
// [arr8 addObject:@"three"];
NSLog(@"len = %ld",len);
NSLog(@"%@",arr);
}
12. NSDictionary的介绍及使用
/**
* 字典的创建方法
*/
void test(){
//NSDictionary 字典
//NSArray @"1" @“2”
//字典的结构
// 键值对
// key(键) value(实际的值)
// zs 张三
// ls 李四
//创建字典
//1、使用类方法创建字典
// 字典初始化后,内部是无序的
NSDictionary *dict1 = [NSDictionary dictionaryWithObjectsAndKeys:@"zhangsan",@"zs",@"lisi",@"ls", nil];
NSDictionary *dict2 = [[NSDictionary alloc] initWithObjectsAndKeys:@"zhangsan",@"key1",@"lisi",@"key2", nil];
NSLog(@"%@",dict2);
//获取字典的长度
NSLog(@"%ld",dict2.count);
//2、快速创建字典 @{key:value,key1:value1}
// 在字典中,key值是不能够重复的,重复的时候不会报错
// 重复的只保留一个(第一次出现的那个)
NSDictionary *dict3 = @{@"zs":@"zhangsan",@"ls":@"lisi",@"zs":@"fengjie"};
NSLog(@"%@",dict3);
}
/**
* NSDictionary 基本使用
*/
void test2(){
//字典长度 ?
// 2 -- @"zs":@"fengjie" 没有被添加到字典中,原因是key值重复了
NSDictionary *dict3 = @{@"zs":@"zhangsan",@"ls":@"lisi",@"zs":@"fengjie"};
//1) 获取字典长度(键值对的个数)
NSLog(@"%ld",dict3.count);
NSLog(@"%@",dict3);
//2)根据key获取 value 只获取zs
NSString *s = [dict3 objectForKey:@"zs"];
NSLog(@"%@",s);
}
-(void)test3(){
NSArray *arr = @[@"1",@"2"];
NSDictionary *dict3 = @{@"zs":@"zhangsan",@"ls":@"lisi",@"arr":@"fengjie"};
//1、关于字典的遍历问题
//for(int i=0;i<dict3.count;i++){
//根据key ---> value
//}
//2、使用增强型for 循环可以遍历
// str 存放的 key 还是 value
// 通过这种方式,得到的是字典的key值
// for (NSString *str in dict3) {
// // 得到的事key
// NSString *ss = [dict3 objectForKey:str];
// NSLog(@"%@ ---> %@",str,ss);
// }
// 3、使用block 进行遍历
// key 就是我们键值对 key值
// obj 就是我们key 对应的 value值
[dict3 enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
NSLog(@"%@--->%@",key,obj);
}];
}
13. NSDictionary的简写及文件操作
/**
* Dictionary的简写形式
*/
void test(){
//创建字典的简写形式
NSDictionary *dict3 = @{@"zs":@"zhangsan",@"ls":@"lisi",@"arr":@"fengjie"};
//获取value值得简写形式
NSLog(@"%@",dict3[@"arr"]);
}
-(void)test2(){
//NSDictionary的文件操作
NSArray *arr = @[@"1",@"2",@"one"];
NSDictionary *dict = @{@"1":@"one",@"2":@"two"};
//1、把字典的内容写入到文件中
// writeToFile
NSDictionary *dict3 = @{@"zs":@"zhangsan",@"dict":dict,@"arr":arr};
//把字典写入到文件中
BOOL flag = [dict3 writeToFile:@"/Users/apple/Desktop/dict.plist" atomically:YES];
if (flag) {
NSLog(@"写入成功!");
}
//2、从文件中读取数据,放到字典中
// 给一个路径
NSDictionary *dict4 = [NSDictionary dictionaryWithContentsOfFile:@"/Users/apple/Desktop/dict.plist"];
//获取字典中的数组
NSArray *arr2 = dict4[@"arr"];
NSLog(@"%@",arr2);
//获取字典中的字典
NSDictionary *dict5 = dict4[@"dict"];
NSLog(@"%@",dict5);
}
14.NSMutableDictionary介绍和使用
-(void)test(){
//创建可变NSMutableDictionary
// 创建一个空的字典
NSMutableDictionary *dict1 = [NSMutableDictionary dictionary];
// 使用类方法创建一个字典
NSMutableDictionary *dict2 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"v1",@"k1",@"v2",@"k2", nil];
//2、可变字典的常见方法
//1) 添加元素
//给他设置值
//如果添加一个值,实际上是添加一组键值对
[dict1 setObject:@"one" forKey:@"1"];
[dict1 setObject:@"two" forKey:@"2"];
[dict1 setObject:@"three" forKey:@"3"];
[dict1 setObject:@"four" forKey:@"4"];
//使用dictionary 给字典重新赋值
dict1.dictionary =@{@"zs":@"zhangsan"};
dict1[@"1"] = @"one";
dict1[@"2"] = @"one2";
dict1[@"3"] = @"one3";
dict1[@"4"] = @"one4";
//2) 删除元素
[dict1 removeObjectForKey:@"3"];
//3) 删除所有元素
// [dict1 removeAllObjects];
NSLog(@"%@",dict1);
}