2

我想扫描 NSString (不区分大小写)以检查数组的所有元素是否包含在该字符串中?

例如。

    NSString *string1 = @"Java is pass by value : lets see how?";
    NSString *string2 = @"Java is OOP Language";

    NSArray *array = [[NSArray alloc] initWithObjects:@"Java",@"Pass",@"value", nil];

在这种情况下,string1 通过了测试,因为它包含数组中的所有关键字(即 Java、Pass、Value)。

那么,我怎样才能实现这个功能呢?

4

2 回答 2

1
BOOL containsAll = YES;
for (NSString *test in array) {
    if ([string1 rangeOfString:test].location == NSNotFound) {
        containsAll = NO;
        break;
    }
}
于 2013-03-12T08:29:16.233 回答
1

我没有测试它的速度,它会在区分大小写的字符串上失败,但这是另一种解决方案(以防万一)

NSArray *components = [string1 componentsSeparatedByString:@" "];
NSSet *textSet = [NSSet setWithArray:components];
NSSet *keywordsSet = [NSSet setWithArray:array];
BOOL result = [keywordsSet isSubsetOfSet:textSet];

请记住,这componentsSeparatedByString将非常愚蠢地标记化,例如“如何?” 而不是你需要的“如何”。

于 2013-03-12T08:48:33.563 回答