2012-02-13 5 views
23

insensetive場合と、別の1つの文字列を見つける私の質問は、文字列(NSStringの)は、別の小さな文字列が含まれているが、ケースを無視している場合はどのように確認することができHow do I check if a string contains another string in Objective-C?iPhone:?

に似ていますか私のようなものを期待していた

NSString *string = @"hello bla bla"; 

:とにかく

NSLog(@"%d",[string containsSubstring:@"BLA"]); 

は、文字列は無視した場合と、別の文字列が含まれている場合、検索する方法はありますか?しかし、両方の文字列をUpperCaseまたはLowerCaseに変換しないでください。

+0

申し訳ありませんが、私は混乱しています.. !! – Sarah

+0

両方の文字列を小文字/大文字に変換してやりたいのですが?それはそれを行うか、 'NSRegularExpression'を使うのが最善の方法でしょう。 – mattjgalloway

答えて

75

上記の回答に似ていますが、optionsを使用してください。

あなたは、サブストリングのための範囲を得るために-(NSRange)rangeOfString:(NSString *)aString options:(NSStringCompareOptions)mask;を使用することができますApple doc

NSString *string = @"hello bla bla"; 

if ([string rangeOfString:@"BLA" options:NSCaseInsensitiveSearch].location == NSNotFound) 
{ 
    NSLog(@"string does not contain bla"); 
} 
else 
{ 
    NSLog(@"string contains bla!"); 
} 
0

方法

[string rangeOfString:@"bla" options:NSCaseInsensitiveSearch]; 

はあなたを助ける必要があります。

2
NSString *string = @"hello BLA"; 
if ([string rangeOfString:@"bla" options:NSCaseInsensitiveSearch].location == NSNotFound) { 
    NSLog(@"string does not contain bla"); 
} else { 
    NSLog(@"string contains bla!"); 
} 
0

- (NSRange)rangeOfString:(NSString *)aString options:(NSStringCompareOptions)maskを参照してください、maskパラメータは大文字小文字を区別しないマッチングを指定するために使用されます。

例:

NSRange r = [str rangeOfString:@"BLA" 
         options:NSCaseInsensitiveSearch]; 

documentationに述べたように、この方法は、サブストリングが見つからない{NSNotFound, 0}ような範囲を返します。文字列がnilある場合

BOOL b = r.location == NSNotFound; 

重要このメソッドは例外を発生させます。

4

iOS 8では、NSStringにcontainsString:またはlocalizedCaseInsensitiveContainsStringメソッドを追加できます。

if ([string localizedCaseInsensitiveContainsString:@"BlA"]) { 
    NSLog(@"string contains Case Insensitive bla!"); 
} else { 
    NSLog(@"string does not contain bla"); 
}