/* 处理工程文件crayons.txt中的文本信息,文本内容是关于颜色的,每行都是一 个颜色的信息,例如:Almond #EED9C4,前⼀一个字符串是颜色的名称,后一 个字符串是颜⾊色的16进制色值,处理⽂文本完成如下需求:
1、使用字典管理所有的颜色,即字典中存储的是多个键值对,颜⾊色名称为 key,16进制颜色值(不带#)是value。
2、取出所有的key,升序排列。
3、取出所有的value,按照排序后的key排列。
4、使⽤用一个新的字典管理颜色,对颜色进⾏行分类管理,即:“A”,“B”,“C”... 即这个字典包含多个键值对,key是26个字母,value是数组,数组⾥里存放的是 Color对象(包含name和colorValue)。需要自己创建Color类。
*/
main.m
int main(int argc, const char * argv[]) {
@autoreleasepool {
//1 从文件中读取字符串
NSString *txtStr = [NSString stringWithContentsOfFile:@"/Users/lanou3g/Desktop/Zc4d5/crayons.txt" encoding:NSUTF8StringEncoding error:nil];
NSLog(@"原序列");
NSLog(@"%@",txtStr);
//2 通过"\n"进行切割
NSLog(@"======================================================");
NSArray *txtStrs = [txtStr componentsSeparatedByString:@"\n"];
NSLog(@"通过\n进行切割 %@",txtStrs);
//3 创建颜色字典
NSMutableDictionary *colorDic = [[NSMutableDictionary alloc] init];
//4 遍历数组
for (NSString *colorStr in txtStrs) {
//对颜色字符串进行" #"切割
NSArray *arr = [colorStr componentsSeparatedByString:@" #"];
//创建键值对象 存入字典
[colorDic setValue:arr[1] forKey:arr[0]];
}
NSLog(@"%@",colorDic);
//获取所有的key 并进行排序
NSArray *sortedKeys = [[colorDic allKeys]sortedArrayUsingSelector:@selector(compare:)];
//获取所有的Value 要求顺序和key一样
//1. 创建空的数组
NSMutableArray *sortedValues = [[NSMutableArray alloc]init];
//2 遍历排序后的key数组
for (NSString *key in sortedKeys) {
NSString *value = [colorDic valueForKey:key];
//放入数组中
[sortedValues addObject:value];
}
NSLog(@"sortedKeys %@",sortedKeys);
NSLog(@"sortedValues %@",sortedValues);
//1 创建管理颜色对象的大字典
NSMutableDictionary *newColorDic = [[NSMutableDictionary alloc]init];
//2 遍历 颜色数据字典
for (NSString *key in colorDic) {
//获取对应的value
NSString *value = [colorDic valueForKey:key];
//对象的封装
Color *color = [[Color alloc]initWithName:key ColorValue:value];
//获取首字母
NSString *first = [[key substringToIndex:1]uppercaseString];
//获取颜色分组
NSMutableArray *colorArr = [newColorDic valueForKey:first];
if (colorArr == nil) {
//如果对应颜色分组不存在 就创建分组
colorArr = [[NSMutableArray alloc]init];
//把颜色分组放入颜色大字典中
[newColorDic setValue:colorArr forKey:first];
}
[colorArr addObject:color];
}
NSLog(@"%@",newColorDic);
}
return 0;
}
Color.m
#import "Color.h"
@implementation Color
-(id)initWithName:(NSString *)name ColorValue:(NSString *)ColorValue
{
self = [super init];
if (self) {
_name = name;
_ColorValue =ColorValue;
}
return self;
}
-(NSString *)description
{
return [NSString stringWithFormat:@"color: %@ %@",_name,_ColorValue];
}
@end