- (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];
}
}
}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。