2012-04-17 6 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

0

NSRangeと[NSString lowercaseString]を使用して、検索文字列と検索する単語の両方の小文字バージョンを作成します。

次に、NSRangeを生成するために小文字の検索文字列のrangeOfStringメソッドを使用して、 "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

私はテーブルビューで検索するために上記のコードを使用しました。大文字と小文字の両方で動作します。 –

関連する問題