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

时间:2011-09-27 12:48:35

标签: iphone arrays string

我希望可以通过“NSPredicate”完成。我有成千上万的字符串数组,我想使用字符串长度拆分成数组。即长度为2的字符串将成为一个数组。长度为3的字符串将以数组形式出现。是否可以使用“NSPredicate”。我检查了NSPredicate Class Reference。但找不到有用的例子。

感谢
尼尔

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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];
}