由几个数组分隔字符串数组

时间:2016-08-11 12:51:31

标签: ios objective-c nsarray

我有一个数组,由以下字符串组成:

cocos2d::Device::setKeepScreenOn(true);

例如,它有200个不同的字符串。第一个参数--wackingBy,可能有几个不同的名称。例如 - 盒子,管子,袋子等

我想要的是,枚举该数组,并根据该名称创建不同的数组。所以,如果我的数组包含50个字符串从框开始,50个字符串从tube开始,100个字符串从bag开始我想要3个不同的数组。

有没有简单的方法来实现这一目标?

1 个答案:

答案 0 :(得分:1)

试试这个:

假设你有字符串数组:

NSArray *arr=@[@"box3523sfgsg",@"boxsdfsdf3",@"bag!@$#",@"!@@4bag",@"tube@#$FR",@"tubeASAD"];

在您的情况下,上面的数组填充了以下字符串

[NSString stringByAppendingFormat:@"<p style=\"padding-left:20px;margin-bottom:-10px;\"><i>%@%@%@%@</i></p>",
                         wrappingBy, pack1, pack2, strFirmName];

现在每次将上面的字符串添加到数组时,都会将wrappingBy param添加到数组中,并确保不要将重复项添加到数组中。你可以在将它们添加到数组之前检查重复项。

在你的情况下,你会做

        NSMutableArray *arrayNAme=[[NSMutableArray alloc]init];

        //make arrayName mutable
        if (![arrayNAme containsObject: wrappingBy]) {
             [arrayNAme addObject: wrappingBy];
        }

你将获得arrayNAMe包含以下内容:

      arrayNAme=@[@"box",@"bag",@"tube"];

现在搜索主数组字符串是否包含wrapingBy名称,如果是,则将它们添加到数组并将该数组添加到dicitonary:

    NSMutableDictionary *myDictionary=[[NSMutableDictionary alloc]init];
    for( NSString *nameString in arrayNAme) {
       NSMutableArray *strnArray=[[NSMutableArray alloc]init];
       for (NSString *str in arr)
       {
           if([str containsString:nameString])
           {
            [strnArray addObject:str];
            [myDictionary setValue:strnArray forKey:nameString];
           }
       }
    }

最后你有字典:

    {
    bag =     (
        "bag!@$#",
        "!@@4bag"
    );
    box =     (
        box3523sfgsg,
        boxsdfsdf3
    );
    tube =     (
        "tube@#$FR",
        tubeASAD
    );
}

现在,您可以获取每个键值并将它们存储在单独的数组中。