我有以下方法来过滤一些结果: 目前它这样做: 数组:alpha,apple,aries,bravo
输入a:
阿尔法 苹果 白羊
输入l(现在为al)
阿尔法
我想这样做:
新搜索: 输入p = α 苹果
下面是代码
先谢谢你
-(void) filterResults:(NSString *)searchText{
NSMutableArray *test = [NSMutableArray arrayWithArray:self.listContent];
[self.filteredListContent removeAllObjects]; // First clear the filtered array.
for (int i=0; i<[test count]; i++) {
NSString *stringResult = [test objectAtIndex:i];
NSComparisonResult result = [stringResult compare:searchText options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch) range:NSMakeRange(0, [searchText length])];
if (result == NSOrderedSame){
[self.filteredListContent addObject:stringResult];
}
}
[self.filteredListContent sortUsingSelector:@selector(localizedCaseInsensitiveCompare:)];//sort alphabetically
NSLog(@"filtered results = %@",self.filteredListContent);
}
答案 0 :(得分:1)
要在字符串中的任何位置找到该字母,请将其替换为:
NSComparisonResult result = [stringResult compare:searchText options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch) range:NSMakeRange(0, [searchText length])];
if (result == NSOrderedSame){
[self.filteredListContent addObject:stringResult];
}
用这个:
NSRange range = [stringResult rangeOfString:searchText];
if (range.location != NSNotFound) {
[self.filteredListContent addObject:stringResult];
}
请注意,必须按顺序查找所有字符。
如果您想找到任何字符,请使用rangeOfCharacterFromSet:
。
答案 1 :(得分:0)
试试这个。
NSPredicate *predicate = [NSPredicate predicateWithFormat:[NSString stringWithFormat:@"SELF beginswith '%@'", searchText]];
self.filteredListContent = [self.listContent filteredArrayUsingPredicate:predicate];
希望这会对你有所帮助。