使用后缀搜索NSArray

时间:2012-10-07 15:38:28

标签: objective-c search nsarray

我在NSArray中存储了一个单词列表,我希望找到其中包含结尾“ing”的所有单词。

有人可以提供一些示例/伪代码。

4 个答案:

答案 0 :(得分:8)

使用NSPredicate过滤NSArrays

NSArray *array = @[@"test", @"testing", @"check", @"checking"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF ENDSWITH 'ing'"];
NSArray *filteredArray = [array filteredArrayUsingPredicate:predicate];

答案 1 :(得分:4)

假设您已定义数组:

NSArray *wordList = // you have the contents defined properly

然后您可以使用块

枚举数组
// This array will hold the results.
NSMutableArray *resultArray = [NSMutableArray new];

// Enumerate the wordlist with a block
[wordlist enumerateObjectsUsingBlock:(id obj, NSUInteger idx, BOOL *stop) {
    if ([obj hasSuffix:@"ing"]) {
        // Add the word to the result list
        [result addObject:obj];
    }
}];

// resultArray now has the words ending in "ing"

(我在此代码块中使用ARC)

我给出了一个使用块的示例,因为它可以为您提供更多选项,并且它是一种更现代的枚举集合方法。您也可以使用并发枚举执行此操作,并获得一些性能优势。

答案 2 :(得分:2)

只需循环遍历并检查类似的后缀:

for (NSString *myString in myArray) {
  if ([myString hasSuffix:@"ing"]){
    // do something with myString which ends with "ing"
  }
}

答案 3 :(得分:1)

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

// assuming your array of words is called array:
for (int i = 0; i < [array count]; i++)
{
    NSString *word = [array objectAtIndex: i];
    if ([word hasSuffix: @"ing"])
        [results addObject: word];
}

// do some processing

[results release]; // if you're not using ARC yet.

从头开始输入,应该有效:)