分享

模糊搜索

 skylonely 2014-04-04
- (void)viewDidLoad
{
    [super viewDidLoad];
    searchArray = [[NSMutableArray alloc] init];
    NSArray *arrayy =[NSArray arrayWithObjects:@"李小花",@"李小明",@"李小小",@"孙小雷",@"刘明",@"Adbey",@"hahn",@"adBey",@"小小",@"Banana One",nil];
   
    NSString *key = @"李小";
    [self userFuzzySearch:arrayy keyStr:key];
    if([searchArray count] < 1)
        NSLog(@"No Data!");
    else
        NSLog(@"%@",searchArray);


//不连续搜索
- (void)userFuzzySearch:(NSArray *)dataArray keyStr:(NSString *)key{
    if([dataArray count] < 1) return;
   
    NSString *searchData = @"";
    searchData = [NSString stringWithCString:[key UTF8String] encoding:NSUTF8StringEncoding];
   
    if([searchData length] > 0)
    {
        for(int i=0; i<[dataArray count];i++)
        {
            NSString *data = @"";
           
            if(![searchData canBeConvertedToEncoding:NSASCIIStringEncoding])
            {
                data = [dataArray objectAtIndex:i];
            }else
            {
                data = [dataArray objectAtIndex:i];
                NSMutableString *pinyin = [[NSMutableString alloc] init];
                for(int i=0; i<[data length];i++)
                {
                    NSString *str =[[NSString stringWithFormat:@"%c",pinyinFirstLetter([data characterAtIndex:i])] uppercaseString];
                    [pinyin appendString:str];
                }
                if([pinyin length] > 0)
                    data =  pinyin;
            }
           
            int currentLocation = 0;
            [self searchDataInString:data fullString:[dataArray objectAtIndex:i] withSearchText:searchData withLocation:currentLocation];
        }
    }
}

-(void)searchDataInString:(NSString *)data fullString:(NSString *)fullData withSearchText:(NSString *)searchText withLocation:(int)location{
   
    if([data length] > location)
    {
        NSComparisonResult result = [data compare:searchText options:NSCaseInsensitiveSearch
                                            range:NSMakeRange(location, [searchText length])];
        if (result == NSOrderedSame)
        {
            [searchArray addObject:fullData];
        }else
        {
            location++;
            [self searchDataInString:data fullString:fullData withSearchText:searchText withLocation:location];
        }
    }
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多