2012-04-17 87 views
0

如何搜索使用rangeOfString的大写和小写字符串的字符串?如何搜索rangeOfString的大写和小写字母?

这是我到目前为止;

for (NSString* key in words) { 

if ([searchfield.text rangeOfString:key].location != NSNotFound) 
{ 

     NSString *textresult = [words objectForKey:key]; 
     NSLog(@"Answer: %@", textresult); 
     result.text = textresult; 

     result.tag = 1; 

} 

感谢

回答

2
大写或小写

只需搜索相应key:如果用户使用上

[searchField.text rangeOfString:[key lowercaseString]].location != NSNotFound 

[searchField.text rangeOfString:[key uppercaseString]].location != NSNotFound 

如果你不关心或小写,只需使用NSCaseInsensitiveSearch选项:

[searchfield.text rangeOfString:key options: NSCaseInsensitiveSearch].location 
    != NSNotFound 
+0

或[searchField.text lowercaseString] rangeOfString:关键lowercaseString]。 – danh 2012-04-17 21:56:03

0

我会使用NSRange和[NSString lowercaseString]创建搜索字符串和要搜索的单词的小写版本。

然后使用小写字母搜索字符串的rangeOfString方法产生一个NSRange,然后我会使用“successRange”来输出原始文本的相应块。

这里是一个工作示例我工作了你:

NSArray *keys = [NSArray arrayWithObjects:@"key1", @"key2", @"key3", @"key4", @"key5",@"key6", nil]; 

NSArray *objects = [NSArray arrayWithObjects:@"How", @"are", @"you", @"doing", @"?",@"How are you doing?", nil]; 


NSDictionary * words = [NSDictionary dictionaryWithObjects:objects forKeys:keys]; 

NSString * searchString = @"are"; 
NSString * lowercaseSearchString = [searchString lowercaseString]; 

for(NSString * key in words){ 

    NSString * text = [words objectForKey:key]; 
    NSString * lowercaseText = [text lowercaseString]; 

    NSRange successRange = NSRangeFromString(@""); 

    NSRange lowercaseRange = [lowercaseText rangeOfString:lowercaseSearchString]; 

    if(lowercaseRange.location!=NSNotFound){ 
     successRange = lowercaseRange; 
    } 

    NSLog(@"key: %@, text: %@", key,text); 
    if(successRange.length >0){ 
     NSLog(@" text subStringWithRange: %@", [text substringWithRange:successRange]);   
    } 
} 
0
-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText 
{ 
     flavourarray = [[NSMutableArray alloc]init]; 
     imagearray = [[NSMutableArray alloc]init]; 
     categoryarray = [[NSMutableArray alloc]init]; 
    [filteredListContent removeAllObjects]; // clear the filtered array first 
searchText=[searchText uppercaseString]; 

    NSString *cellTitle; 

BOOL flag1=NO; 
searchText=[searchText lowercaseString]; 
int i1=0; 
j=0; 
for (cellTitle in listContent) 
{ 
NSComparisonResult result = [cellTitle compare:searchText  
    options:NSCaseInsensitiveSearch range:NSMakeRange(0, [searchText length])]; 
    if (result == NSOrderedSame) 
    { 

     if(flag1==NO) 
     { 
      filtered_flag=i1; 
      flag1=YES; 
     } 
     [filteredListContent addObject:cellTitle]; 
     NSString *searchflavour = [[categoryarray_ipad objectAtIndex:j]objectForKey:@"flavour"]; 
     NSString *searchcategory = [[categoryarray_ipad 
     objectAtIndex:j]objectForKey:@"category"]; 
     NSString *searchimage = [[categoryarray_ipad objectAtIndex:j]objectForKey:@"image"]; 

     if (searchText.length !=0) { 
     [categoryarray addObject:searchcategory]; 
     } 
     [flavourarray addObject:searchflavour]; 
     [imagearray addObject:searchimage]; 
    } 
    j++; 
    i1++; 
} 
NSLog(@"filtered_flag:%d",filtered_flag); 
NSLog(@"filtered:%@",filteredListContent); 
searchresult =TRUE; 

[itemstable_ipad reloadData]; 

}

+0

我在表格视图中使用了上面提到的代码进行搜索。它适用于大写字母以及小写字母。 – 2012-04-18 05:18:54

相关问题