iOS 模糊、精確搜索匹配功能方法總結 By HL


字符串搜索主要用於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循環快並且性能消耗很低。)

OC學習篇之---謂詞(NSPredicate)

NSPredicate 謂詞總結 數組過濾 模糊匹配

iOS開發_常用的正則表達

iOS_正則表達式

 

 

第三方庫

SearchCoreTest

一個聯系人搜索庫,支持的搜索方式包括:用戶名漢字、拼音及模糊搜索,號碼搜索,最重要的是支持T9搜索,很贊。

UTPinYinHelper

 

通過拼音去匹配漢字,簡單來說,就是拼音搜索
示例:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM