目标C:确定NSString中是否存在子字符串的最简单方法是什么?

时间:2012-07-13 18:40:52

标签: objective-c

在PHP(这是我最熟悉的)中,它是一个单行表达式:

strpos('abc', 'b') !== false

Objective C等价物是什么?

3 个答案:

答案 0 :(得分:6)

[@"abc" rangeOfString:@"b"].location != NSNotFound

答案 1 :(得分:3)

我认为类别可以用来很好地打包这样的功能。

@interface NSString (ContainsString)
- (BOOL)containsString:(NSString *)string;
@end

@implementation NSString (ContainsString)
- (BOOL)containsString:(NSString *)string
{
    NSRange range = [self rangeOfString:string options:NSCaseInsensitiveSearch];
    return range.location != NSNotFound;
}
@end

使用时,它的含义非常清晰。

if ([@"this is a string" containsString:@"a string"]) {
    …
}

在大多数项目中,这将是更大的字符串方法类别的一部分,而不是它自己的单方法类别。

答案 2 :(得分:0)

- (NSRange)rangeOfString:(NSString *)aString
  

返回值NSRange结构,给出位置和长度   第一次出现aString的接收者。返回{NSNotFound,   0}如果找不到aString或为空(@“”)。

您可以在NSString Class Reference

中找到更多有用的字符串操作函数