处理⼯程⽂件crayons.txt
2015-11-03 22:38
232 查看
题目:
处理⼯程⽂件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类。
Color.h
Color.m
main.m
处理⼯程⽂件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类。
Color.h
{ NSString * _name; NSString * _value; } - (instancetype)initWithName:(NSString *)name value:(NSString *)value; - (NSString *)getName; - (NSString *)getValue;
Color.m
- (instancetype)initWithName:(NSString *)name value:(NSString *)value { self = [super init]; if (self) { _name = name; _value = value; } return self; } - (NSString *)getName { return _name; } - (NSString *)getValue { return _value; } - (NSString *)description { return [NSString stringWithFormat:@"COLOR --> %@ %@",_name,_value]; }
main.m
int main(int argc, const char * argv[]) { // 获取文件路径 NSString * filePath = @"/Users/wanglong/Desktop/SHS151014/OC05/crayons.txt"; // 从文档中读取字符串 NSString * dataString = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil]; NSLog(@"%@",dataString); // 将字符串以 \n 做分割,得到所有表示颜色的字符串,存储在dataArray中 NSArray * dataArray = [dataString componentsSeparatedByString:@"\n"]; // 创建空的可变的字典,存储表示颜色的键值对 NSMutableDictionary * colorDic = [NSMutableDictionary dictionaryWithCapacity:[dataArray count]]; // 快速枚举dataArray,得到表示颜色的字符串 for (NSString *colorString in dataArray) { //分割colorString,得到颜色的名字和色值 NSArray * colorComponents = [colorString componentsSeparatedByString:@" #"]; NSString * colorName = colorComponents[0]; NSString * colorValue = colorComponents[1]; // 将颜色的名字作为key,色值作为value,存储在字典中 [colorDic setObject:colorValue forKey:colorName]; } // 枚举结束后,输出管理颜色的字典 NSLog(@"color dic = %@",colorDic); NSMutableDictionary * colorGroupDic = [NSMutableDictionary dictionaryWithCapacity:30]; NSArray * colorNameArray = [colorDic allKeys]; for (int i = 0; i < [colorNameArray count]; i ++) { // 字典的key 就是 color的name NSString * name = colorNameArray[i]; // 字典的value color的value NSString * value = [colorDic objectForKey:name]; // 初始化color对象 Color * c = [[Color alloc] initWithName:name value:value]; // 取出首字母 NSString * groupName = [name substringToIndex:1]; NSMutableArray * oneGroup = [colorGroupDic objectForKey:groupName]; if (nil == oneGroup) { oneGroup = [NSMutableArray arrayWithObject:c]; [colorGroupDic setObject:oneGroup forKey:groupName]; }else{ [oneGroup addObject:c]; } } NSLog(@"colorGroupDic = %@",colorGroupDic); return 0; }
相关文章推荐
- 内联函数
- Palindrome Number
- UDP client,UDP server, TCP server, TCP client
- 内联函数
- ios @interface @implementation
- 关于android中数据库连接的问题
- 重载的操作符成员函数与非成员函数
- java 创建文件夹
- Add Two Numbers
- poj 3280 Cheapest Palindrome
- PHP优化
- 红黑树
- GraphicsMagick+im4java 图片处理
- boost any类库的使用和内部实现细节
- hdoj Pahom on Water 4183 (最大流)
- 如何防止滴滴出行后台自启
- 【C语言】【笔试题】【面试题】判断一个字符串是否为另外一个字符串旋转之后的字符串
- js中的一些消息提示框
- PHP优化04 imagick图像处理插件安装
- PHP配置文件 php.ini 选项说明