如何在 Objective-C 中检查一个字符串是否包含另一个字符串?

38 浏览
0 Comments

如何在 Objective-C 中检查一个字符串是否包含另一个字符串?

我怎样能检查一个字符串(NSString)是否包含另一个较小的字符串?

我希望像下面这样:

NSString *string = @"hello bla bla";
NSLog(@"%d",[string containsSubstring:@"hello"]);

但是我能找到的最接近的是:

if ([string rangeOfString:@"hello"] == 0) {
    NSLog(@"sub string doesnt exist");
} 
else {
    NSLog(@"exists");
}

总之,那是寻找字符串包含另一个字符串的最好方式吗?

admin 更改状态以发布 2023年5月24日
0
0 Comments

对于iOS 8.0+和macOS 10.10+,您可以使用NSString的本机containsString:

对于旧版本的iOS和macOS,您可以为NSString创建自己的(已过时的)类别:

@interface NSString ( SubstringSearch )
    - (BOOL)containsString:(NSString *)substring;
@end
// - - - - 
@implementation NSString ( SubstringSearch )
- (BOOL)containsString:(NSString *)substring
{    
    NSRange range = [self rangeOfString : substring];
    BOOL found = ( range.location != NSNotFound );
    return found;
}
@end

注意:请注意Daniel Galasko的下面的注释,关于命名

0
0 Comments

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

关键是要注意,rangeOfString:返回一个NSRange结构体,并且文档中说明,如果“大堆草”不包含“针”,则返回结构体{NSNotFound,0}


如果你使用的是iOS 8或OS X Yosemite,则可以执行以下操作:*(注:如果在iOS7设备上调用此代码,则会导致应用程序崩溃)。

NSString *string = @"hello bla blah";
if ([string containsString:@"bla"]) {
  NSLog(@"string contains bla!");
} else {
  NSLog(@"string does not contain bla");
}

(这也是在Swift中的工作方式)

0