字符串搜索主要用於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搜索,很贊。
通過拼音去匹配漢字,簡單來說,就是拼音搜索
示例:
