19

我想在我的 NSArray 中搜索某个字符串。

例子:

NSArray 有对象:“dog”、“cat”、“fat dog”、“thing”、“another thing”、“heck here's another thing”

我想搜索单词“另一个”并将结果放入一个数组中,并将另一个非结果放入另一个可以进一步过滤的数组中。

4

3 回答 3

47

如果已知数组中的字符串是不同的,则可以使用集合。NSSet 在大输入上比 NSArray 快:

NSArray * inputArray = [NSMutableArray arrayWithObjects:@"one", @"two", @"one again", nil];

NSMutableSet * matches = [NSMutableSet setWithArray:inputArray];
[matches filterUsingPredicate:[NSPredicate predicateWithFormat:@"SELF contains[c] 'one'"]];

NSMutableSet * notmatches = [NSMutableSet setWithArray:inputArray];
[notmatches  minusSet:matches];
于 2009-12-06T06:50:38.253 回答
37

未经测试,因此可能有语法错误,但您会明白的。

NSArray* inputArray = [NSArray arrayWithObjects:@"dog", @"cat", @"fat dog", @"thing", @"another thing", @"heck here's another thing", nil];

NSMutableArray* containsAnother = [NSMutableArray array];
NSMutableArray* doesntContainAnother = [NSMutableArray array];

for (NSString* item in inputArray)
{
  if ([item rangeOfString:@"another"].location != NSNotFound)
    [containsAnother addObject:item];
  else
    [doesntContainAnother addObject:item];
}
于 2009-12-06T00:18:09.060 回答
1

它不起作用,因为根据文档“indexOfObjectIdenticalTo:”返回与您传入的对象具有相同内存地址的第一个对象的索引。

你需要遍历你的数组并进行比较。

于 2012-02-21T05:11:54.517 回答