在一串字符串ios中的任何地方找到一个字母

时间:2012-12-17 05:58:32

标签: ios

我有以下方法来过滤一些结果: 目前它这样做: 数组: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);
}

2 个答案:

答案 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];

希望这会对你有所帮助。