【问题标题】:All elements of nsarray are present in nsstring or notnsarray 的所有元素是否存在于 nsstring 中
【发布时间】:2013-03-12 08:25:36
【问题描述】:

我想扫描 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)。

那么,我该如何实现这个功能呢?

【问题讨论】:

    标签: ios nsstring nsarray


    【解决方案1】:

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

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

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

    【讨论】:

    • 如果数组的元素包含空格,这将失败。如果这不是问题:好主意! +1
    【解决方案2】:
    BOOL containsAll = YES;
    for (NSString *test in array) {
        if ([string1 rangeOfString:test].location == NSNotFound) {
            containsAll = NO;
            break;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2011-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-09
      • 2011-08-14
      • 1970-01-01
      • 2012-06-16
      相关资源
      最近更新 更多