如何檢查字符串( NSString
)是否包含另外一個較小的字符串? objective-c
我但願有這樣的東西: app
NSString *string = @"hello bla bla"; NSLog(@"%d",[string containsSubstring:@"hello"]);
可是我能找到的最接近的是: spa
if ([string rangeOfString:@"hello"] == 0) { NSLog(@"sub string doesnt exist"); } else { NSLog(@"exists"); }
不管如何,這是查找一個字符串是否包含另外一個字符串的最佳方法嗎? code
NSString *myString = @"hello bla bla"; NSRange rangeValue = [myString rangeOfString:@"hello" options:NSCaseInsensitiveSearch]; if (rangeValue.length > 0) { NSLog(@"string contains hello"); } else { NSLog(@"string does not contain hello!"); }
//您也能夠使用如下方法: 字符串
if (rangeValue.location == NSNotFound) { NSLog(@"string does not contain hello"); } else { NSLog(@"string contains hello!"); }
Oneliner(少許代碼。DRY,由於您只有一個NSLog
): get
NSString *string = @"hello bla bla"; NSLog(@"String %@", ([string rangeOfString:@"bla"].location == NSNotFound) ? @"not found" : @"cotains bla");
P i解決方案的改進版本(NSString上的類別)不只能夠告訴您是否在另外一個字符串中找到了一個字符串,並且還能夠經過引用獲取一個範圍: string
@interface NSString (Contains) -(BOOL)containsString: (NSString*)substring atRange:(NSRange*)range; -(BOOL)containsString:(NSString *)substring; @end @implementation NSString (Contains) -(BOOL)containsString:(NSString *)substring atRange:(NSRange *)range{ NSRange r = [self rangeOfString : substring]; BOOL found = ( r.location != NSNotFound ); if (range != NULL) *range = r; return found; } -(BOOL)containsString:(NSString *)substring { return [self containsString:substring atRange:NULL]; } @end
像這樣使用它: it
NSString *string = @"Hello, World!"; //If you only want to ensure a string contains a certain substring if ([string containsString:@"ello" atRange:NULL]) { NSLog(@"YES"); } // Or simply if ([string containsString:@"ello"]) { NSLog(@"YES"); } //If you also want to know substring's range NSRange range; if ([string containsString:@"ello" atRange:&range]) { NSLog(@"%@", NSStringFromRange(range)); }
這是一個複製粘貼功能代碼段: io
-(BOOL)Contains:(NSString *)StrSearchTerm on:(NSString *)StrText { return [StrText rangeOfString:StrSearchTerm options:NSCaseInsensitiveSearch].location != NSNotFound; }
因爲這彷佛是Google的高排名結果,所以我想添加如下內容: object
iOS 8和OS X 10.10將containsString:
方法添加到NSString
。 這些系統的Dave DeLong示例的更新版本:
NSString *string = @"hello bla bla"; if ([string containsString:@"bla"]) { NSLog(@"string contains bla!"); } else { NSLog(@"string does not contain bla"); }