字符串搜索主要用于UITableView的搜索功能的筛选,过滤,查询
下面是一些流行的搜索查询方法
一.遍历搜索
for循环
根据要求:精确搜索(判读字符串相等) 模糊搜索(字符串包含)
相关知识点
在一个字符串中搜索子字符串 rangeOfString
NSString *str1 = @"can you stest speak English";
NSString *str = @"stest";
//在str1这个字符串中搜索stest,推断有没有
if ([str1 rangeOfString:str].location != NSNotFound) {
NSLog(@"这个字符串中有stest");
}
rangeOfString 前面的參数是要被搜索的字符串,后面的是要搜索的字符
NSNotFound 表示请求操作的某个内容或者item没有发现,或者不存在
NSString *searchText = @"// Do any additional setup after loading the view, typically from a nib.";
NSRange range = [searchText rangeOfString:@"(?:[^,])*\\." options:NSRegularExpressionSearch];
if (range.location != NSNotFound) {
NSLog(@"%@", [searchText substringWithRange:range]);
}
8.0 之后,新出了一个方法:containsString
NSString *str1 = @"can you \n speak English";
NSString *str = @"\n";
//在str1这个字符串中搜索\n,判断有没有
if ([str1 containsString:str]) {
NSLog(@"这个字符串中有\n");
}
示例:
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
[self searchWithText:searchText];
}
// NSLiteralSearch 区分大小写(完全比较)
// NSCaseInsensitiveSearch 不区分大小写
- (void)searchWithText:(NSString *)text
{
NSString *searchText=text;
if (searchText.length>0) {
_searching=YES;
[copyArray removeAllObjects];
for (NSString *tempStr in sourceArray) {
NSRange titleResult=[tempStr rangeOfString:searchText options:NSCaseInsensitiveSearch];
if (titleResult.length>0) {
[copyArray addObject:tempStr];
}
}
}
}
二.谓词搜索
(用NSPredicate类写的一些搜索方法,比for循环快并且性能消耗很低。)
第三方库
一个联系人搜索库,支持的搜索方式包括:用户名汉字、拼音及模糊搜索,号码搜索,最重要的是支持T9搜索,很赞。
通过拼音去匹配汉字,简单来说,就是拼音搜索
示例: