1
回答感謝所有幫助。就發佈而言,我是新的堆棧溢出,所以如果我的編輯很混亂,我很抱歉。下面的代碼是我最終想出來的,並認爲它可以幫助其他人,儘管我相信最後回答的人也可能會產生類似的結果。較不敏感的字符串比較
我一直在尋找一段時間,我相信我可以打破這一點,並使用幾條馬虎的if語句完成它,但我正在尋找一種常見的,有效的方法。
我有一個典型的字符串比較搜索。對於使用NSRange
的數組中的每個字符串,我從中得到的結果可能會很挑剔。
如果我有例如Bat Man
一個字符串我可以用搜索Bat
或Man
找到它,但沒有一次我添加m
到bat
爲Batm
。
我想我要找的是,如果字符存在於字符串內而不是那個字符串。
-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText{
[roomsList removeAllObjects];
stringScore = 0;
// clear
if([searchText length] == 0){
searchingRooms = NO;
[roomsList addObjectsFromArray:[newDataManager shared].rooms];
[self.gsgSearchBar resignFirstResponder];
// search users
}else{
searchingRooms = YES;
for(QBChatRoom *room in [newDataManager shared].rooms){
stringScore = 0;
NSString* newRoomNameText = [room.name stringByReplacingOccurrencesOfString:@"_" withString:@""];
NSString* newSearchText = [searchText stringByReplacingOccurrencesOfString:@" " withString:@""];
for(int i = 0 ;i<[newSearchText length]; i++) {
char mySearchChar = [newSearchText characterAtIndex:i];
lastSearchString = [NSString stringWithFormat:@"%c",mySearchChar];
NSRange searchRange = [newRoomNameText rangeOfString:lastSearchString options:NSCaseInsensitiveSearch];
if (searchRange.location != NSNotFound){
stringScore = stringScore + 1;
if (stringScore == newSearchText.length) {
[roomsList addObject:room];
}
}}}}
[gsgTableView reloadData];
}
如果您在運行比較之前只是將兩個字符串小寫併除去'[a-z]'之外的任何字符,那該怎麼辦?謝謝。 – aroth 2013-04-21 23:26:56
可能工作不愉快。 – rezand 2013-04-21 23:38:14