OC-字符串,数组,字典练习题

  

    //练习1:参数拼接

    //给定一个字典,键值对数目不确定,请拼接成拼接成如下的url形式

    //注意:字典param中的键值对可能非常多

    //多个参数连接使用 &符号,最后一个参数后没有 &符号

    //NSString *url = @"www.weibo.com?username=yang&sex=m&tel=1770&.....&fans=100000";

    //最后拼成类似上面的url打印出来

    

//    NSString *host = @"www.weibo.com";

//    NSDictionary *param = @{@"username":@"yang",@"sex":@"m",@"tel":@"1770",@"password":@"123456",@"isVip":@"1",@"fans":@"10000"};

//    //方法一:可变字符串

//      //host转变成可变字符串str1

//        NSMutableString *str1 = [NSMutableString stringWithString:host];

//      //str1后追加?

//        [str1 appendString:@"?"];

//    

//        NSArray *key = [param allKeys];

//       //遍历所有的关键字

//        for (int i =0 ; i < key.count; i++) //arr.count 就是字典中那个有多少个关键子字

//        {

//            NSString *value = [param objectForKey:key[i]];   //根据相应的key找出value

//          //  NSLog(@"%@", value);

//    

//            [str1 appendString:key[i]];  //添加第一个关键字

//            [str1 appendString:@"="];   //添加=

//            [str1 appendString:value];   //添加第一个键值

//            [str1 appendString:@"&"];   //添加&

//        }

//       [str1 deleteCharactersInRange:NSMakeRange(str1.length-1, 1)];

//        NSLog(@"%@", str1);

  //方法二:可变字符串

//    NSMutableString *mstr = [[NSMutableString alloc]initWithString:host];

//    [mstr appendString:@"?"];

//    NSArray *keys = [param allKeys];

//    for (int i=0; i<keys.count; i++)

//    {

//        NSString *key = keys[i];//取得某一个Key

//        NSString *value = param[key];//取得对应的值

//        if (i==keys.count-1) {//最后一个key,参数后面没有&符号

//            [mstr appendFormat:@"%@=%@",key,value];

//        }

//        else

//        {

//            [mstr appendFormat:@"%@=%@&",key,value];

//        }

//        

//    }

//    NSLog(@"mstr = %@",mstr);

    

    //练习2:参数解析

    //给定一个很长的url(见代码)可能包含多个形如:tel=1770 的参数

    //要求,解析出该url中所有的 xxx = mmm形式的参数并且把 xxx作为一个键值对的key ,mmm作为一个键值对的value, 所有的key value放入到 同一个字典中

    //最后打印该包含所有keyvalue参数的字典

    //注意tel=1770类似的表达式可能无限多,个数不确定

   //方法1:

//    NSString *url = @"www.weibo.com?username=yang&sex=m&tel=1770&password=123456&fans=100000&isVip=1&days=200";

//     //?为分割符将 URL 分割为两个数组

    //方法1:

//        NSArray *arr1 = [url componentsSeparatedByString:@"?"];

//    //&为分割,分割第二个数组

//        NSArray *arr2 = [arr1[1] componentsSeparatedByString:@"&"]; // [arr1 lastObject]=arr1[1]

//    //定义一个可变字典,大小为10

//        NSMutableDictionary *dic = [NSMutableDictionary dictionaryWithCapacity:10];

//    

//    

//        for (int i = 0; i < [arr2 count]; i++)

//        {

//          //定义一个数组将遍历arr2并以=为分割符分割

//            NSArray *arr3 = [arr2[i] componentsSeparatedByString:@"="];

//            [dic setObject:arr3[1] forKey:arr3[0]];

//        }

//  

//        NSLog(@"%@", dic);

    //方法2:

//    NSArray *arr1 = [url componentsSeparatedByString:@"?"];//第一次使用?号分割

//    NSString *str2 = [arr1 lastObject];//等价于 arr1[1]

//    

//    NSArray *arr2 = [str2 componentsSeparatedByString:@"&"];

//    NSMutableDictionary *mdic = [NSMutableDictionary new];

//    for (NSString *param in arr2)

//    {

//        //第三次分割, username=yang这样的式子分割

//        NSArray *arr3 = [param componentsSeparatedByString:@"="];

//        NSString *key  =[arr3 firstObject];//等价于arr3[0]

//        NSString *value = [arr3 lastObject];

//        [mdic setObject:value forKey:key];

//        

//    }

//    NSLog(@"mdic = %@",mdic);

//    

//    

    

    //3.模拟网络数据解析

    //obj是通过Tool方法模拟从网络获取的数据

    //通过对字典和数组,字符串的掌握和应用,请获取obj中所有的信息

    //要求:根据obj打印出的数据格式,解析obj中的数据

    //每一行要求按照如下格式打印出来(不能直接打印字典)

    // name:zhang,sex:0,tel:1870 (这三者的顺序不要求可以改变)

    // name:yang,sex:1,tel:1770

    //...

    //注意obj打印结果中,圆括号代表数组,花括号代表字典;

    //已知条件如下,下面的代码不可以修改

    //我的代码

//    id obj = [Tool fetchObject1];

//    NSLog(@"%@",obj);

//  方法1:

//    for (NSDictionary *dic in obj) //obj中每次取一个字典

//    {

//        //定义一个可变字符串并且把初始容量设为10

//        NSMutableString *str1 = [NSMutableString stringWithCapacity:10];

//        //定义一个数组,取出字典中的所有key

//        NSArray *key=[dic allKeys];

//     

//        NSArray *arr = [dic allKeys];

//           for (NSMutableString *str in arr)

//                {

//                    [str1 appendString:str];

//                    [str1 appendString:@":"];

//                    NSString *str4 = [NSString stringWithFormat:@"%@",dic[str]];

//                    [str1 appendString:str4];

//                    [str1 appendString:@","];

//                }

//        [str1 deleteCharactersInRange:NSMakeRange(str1.length-1, 1)];

//        NSLog(@"%@", str1);

//    }

  //方法2 :

//    NSArray *arr4 = obj;//obj的类型转换为NSArray

//    for (NSDictionary *dic in arr4)//遍历数组的每一个字典

//    {

//        NSMutableString *mstr = [NSMutableString new];//每一个字典对应一个字符串

//        NSArray *keys = [dic allKeys];//某一个字典的keys

//        for (int i=0;i<keys.count;i++)//遍历每一个字典

//        {

//            NSString *key1 = keys[i];//拿到字典的某一个key

//            NSString *value = dic[key1];

//            if (i==keys.count-1) {//字典的最后一个key,没有逗号

//                [mstr appendFormat:@"%@:%@",key1,value];

//            }

//            else{

//                [mstr appendFormat:@"%@:%@,",key1,value];

//            }

//        }

//        NSLog(@"%@",mstr);

//    }

    

//    //4.模拟网络数据解析2

//    //解析obj2并打印,具体要求同题目3

//    //已知条件如下,下面的2行代码不可修改

//     id obj2 = [Tool fetchObject2];

//    NSLog(@"%@",obj2);

//    方法1:

//    NSArray *arr = [obj2 allKeys];

//    NSArray *arr1 = [obj2 objectForKey:arr[1]];

//    

//    for (NSDictionary *dic in arr1)

//    {

//        NSMutableString *str1 = [NSMutableString stringWithCapacity:10];

//        NSArray *arr2 = [dic allKeys];

//        for (NSMutableString *str in arr2)

//        {

//            [str1 appendString:str];

//            [str1 appendString:@":"];

//            NSString *str4 = [NSString stringWithFormat:@"%@",dic[str]];

//            [str1 appendString:str4];

//            [str1 appendString:@","];

//        }

//        [str1 deleteCharactersInRange:NSMakeRange(str1.length-1, 1)];

//        NSLog(@"%@", str1);

//    }

   //方法2:

//    id obj2 = [Tool fetchObject2];

//    NSDictionary *dic5=obj2;

//    NSArray  *data=dic5[@"data"];

//    for (NSDictionary *dic in data)

//    {

//                NSMutableString *mstr = [NSMutableString new];//每一个字典对应一个字符串

//                NSArray *keys = [dic allKeys];//某一个字典的keys

//                for (int i=0;i<keys.count;i++)//遍历每一个字典

//                {

//                    NSString *key1 = keys[i];//拿到字典的某一个key

//                    NSString *value = dic[key1];

//                    if (i==keys.count-1) {//字典的最后一个key,没有逗号

//                        [mstr appendFormat:@"%@:%@",key1,value];

//                    }

//                    else{

//                        [mstr appendFormat:@"%@:%@,",key1,value];

//                    }

//                }

//        NSLog(@"%@",mstr);

//    }

    

    //规律总结:打印数据时,花括号代表字典,字典的每一个元素使用分号结尾.

    //圆括号代表数组,数组的每一个元素使用逗号结尾.

    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值