如何根据字符串长度拆分字符串数组?

3
我希望可以使用“NSPredicate”完成。我有一个包含成千上万个字符串的数组,我想通过字符串长度将它们分割成数组。例如,长度为2的字符串将进入一个数组中,长度为3的字符串将进入另一个数组中,以此类推。是否可以使用“NSPredicate”实现?我查看了NSPredicate类参考文档,但没有找到有用的示例。
谢谢 Neal
2个回答

0
我希望以下代码可以解决你的问题。
 NSString *regExp = @"[A-Z0-9a-z]{2,3}";
 NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regExp];

    NSMutableArray *array=[NSMutableArray new];
    [array addObject:@"ABC"];
    [array addObject:@"AGADF"];
    [array addObject:@"ADFADS"];
    [array addObject:@"DD"];
    [array addObject:@"DFA"];

    NSArray *filtered = [array filteredArrayUsingPredicate:predicate];

    NSLog(@"filter : %@",filtered);

0

我认为使用正则表达式的NSPredicate可能不够高效。这段代码肯定可以更有效地解决问题,你将获得一个字典,其中键是字符串长度,而对象是包含特定长度字符串的相应数组。

NSMutableDictionary* filtered = [NSMutableDictionary dictionary];
NSMutableArray* strings =[NSMutableArray array];
[strings addObject:@"ABC"];
[strings addObject:@"AGADF"];
[strings addObject:@"ADFADS"];
[strings addObject:@"DD"];
[strings addObject:@"DFA"];


for (NSString* s in strings) {
    NSNumber* key = [NSNumber numberWithInt:[s length]];
    NSMutableArray* arr = [filtered objectForKey:key];
    if (nil==arr) {
        arr = [NSMutableArray array];
        [filtered setObject:arr forKey:key];
    } 
    [arr addObject:s];
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接