我想通过我的NSArray搜索某个字符串。
示例:
NSArray有对象:“狗”,“猫”,“肥狗”,“东西”,“另一件事”,“这里是另一回事”
我想搜索单词“another”并将结果放入一个数组,并将另一个非结果放入另一个可以进一步过滤的数组中。
答案 0 :(得分: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];
答案 1 :(得分: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];
}
答案 2 :(得分:1)
它不起作用,因为根据文档“indexOfObjectIdenticalTo:”返回与您传入的对象具有相同内存地址的第一个对象的索引。
你需要遍历你的数组并进行比较。