2012-02-13 19 views
23

Benim soru insensetive dava ile başka bir dize bulmak How do I check if a string contains another string in Objective-C? Ben bir dize (NSString) Başka bir küçük dize içeriyorsa nasıl öğrenebilirimiPhone:

ama davayı görmezden ile benzerdir?

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

Neyse bir dize durumda görmezden başka dize içeriyorsa bulmak için herhangi bir yol yoktur:

NSString *string = @"hello bla bla"; 

ben gibi bir şey için umuyordum? Ancak lütfen her iki dizeyi de UpperCase'e veya LowerCase'e dönüştürmeyin.

+0

Üzgünüm ama kafam karışıyor .. !! – Sarah

+0

Neden her iki dizeyi de küçük harf/büyük harfe dönüştürerek yapmak istemiyorsunuz? Bunu yapmak ya da 'NSRegularExpression' kullanmak için en iyi yol olurdu. – mattjgalloway

cevap

75

Bağlantıda verilen yanıta benzer şekilde, ancak options'u kullanın.

Bir alt dize için bir aralık almak için -(NSRange)rangeOfString:(NSString *)aString options:(NSStringCompareOptions)mask; kullanabilirsiniz 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]; 

yardımcı olacaktır yöntemi.

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

yılında - (NSRange)rangeOfString:(NSString *)aString options:(NSStringCompareOptions)mask Bkz mask parametre harf duyarsız maçı belirtmek için kullanılır.

Örnek: substring bulunamazsa zaman

documentation belirtildiği gibi
NSRange r = [str rangeOfString:@"BLA" 
         options:NSCaseInsensitiveSearch]; 

, yöntem {NSNotFound, 0} gibi bir dizi döner. dize nil ise

BOOL b = r.location == NSNotFound; 

Önemli bu yöntem bir istisna yükseltir.

4

iOS 8'den NSString'e containsString: veya localizedCaseInsensitiveContainsString yöntemini ekleyebilirsiniz.

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