• OC习题 切分字符串 处理色值和名称 (知识点: 字典,枚举,数组,字符串)


    /* 处理工程文件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

  • 相关阅读:
    福尔摩斯的约会 (20)
    数素数 (20)
    STL源码分析-priority_queue
    STL源码分析-bitset
    STL源码分析-rbtree
    STM32自动生成精美图案
    STL源码分析-function
    STL源码分析-list
    STL源码分析-iterator
    STL源码分析-traits
  • 原文地址:https://www.cnblogs.com/fzkwan5438020/p/5067390.html
Copyright © 2020-2023  润新知