NSPredicate将字符数组过滤为字母数组

时间:2010-07-20 16:54:29

标签: objective-c cocoa nsarray filtering nspredicate

我正在尝试在创建单词时创建“加权”字母列表。我在NSArray中有大量的单词列表。例如,我试图获得一个新的NSArray,其中只填充了输入的前两个字母中所有单词的第3个字母。

到目前为止,我有......

NSArray *filteredArray;
if (currentWordSize == 0) {
    filteredArray = wordDictionary
}
else {
    NSPredicate *filter = [NSPredicate predicateWithFormat:@"SELF beginswith[cd] %@", filterString];
    filteredArray = [wordDictionary filteredArrayUsingPredicate:filter];
}

这对于将整个单词放入过滤后的数组非常有用,但这并不是我需要的。任何人都可以告诉我一种只用filteredArray中随机NSString的第一,第二或第三个字母填充wordDictionary的方法吗?

编辑:澄清了我的问题。

1 个答案:

答案 0 :(得分:2)

NSPredicate不是您想要使用的。 NSPredicate只是根据一个或多个条件评估对象并返回yes / no结果,因此它不能用于执行实际操作被测试项目的事情。

要获取数组中每个字符串的第三个字母,并将结果放在一个新数组中,如下所示:

NSArray* wordDictionary;
NSMutableArray* filteredArray = [[NSMutableArray alloc] init];

for (NSString* aString in wordDictionary)
{
    if ([aString length] > 2)
        [filteredArray addObject:[aString substringWithRange:NSMakeRange(2, 1)]];
    else
        [filteredArray addObject:@""]; //there is no third letter
}