ios - 在 objective-c 中,您将如何扫描字符串数组以获得一组子字符串?

标签 ios objective-c xcode

所以我基本上有一系列的单词和短语。其中一些包含诅咒。我想创建一个方法来自动扫描数组中的每个单元以查找诅咒。如果它没有诅咒,将它添加到一个新数组中。

我意识到我可以用一堆 if/else if 语句和 rangeOfString 方法来做到这一点,但我很震惊我有找不到 NSString 的方法来同时搜索一堆单词。

有什么我可能忽略的东西可用于扫描单个字符串以查找子字符串数组吗?

例如: 如果我有一系列短语,例如:

@[@"hey how are you",
  @"what is going on?",
  @"whats up dude?",
  @"do you want to get chipotle?"]

我希望能够扫描然后派生一个新数组,该数组不包含以下数组中的任何单词:

@[@"you", @"hey"]

最佳答案

如果它是一个相当小的列表,只需遍历它检查每个单词。

如果它相当大,将“坏词”放在 NSOrderedSet 中,然后使用方法:containsObject:

如果要检查的单词数量不小,你也可以把要检查的单词放在一个 NSSet 中,将“坏词”放在另一个 NSSet 中,使用方法:intersectsSet:

例子:

NSArray *stringsToCheck  = @[@"hey how are you", @"what is going on?", @"whats up dude?", @"do you want to get chipotle?"];
NSSet *badWords = [NSSet setWithArray:@[@"how", @"dude", @"yes"]];
for (NSString *line in stringsToCheck) {
    NSSet *checkWords = [NSSet setWithArray:[line componentsSeparatedByString:@" "]];
    NSLog(@"checkWords: %@", checkWords);

    if ([checkWords intersectsSet:badWords]) {
        NSLog(@"checkWords contains a bad word in: '%@'", [[checkWords allObjects] componentsJoinedByString:@" "]);
        // Now search for the specific bad word if necessary.
    }
}

NSLog输出:
checkWords 包含一个坏词:'你好吗,嘿'

关于ios - 在 objective-c 中,您将如何扫描字符串数组以获得一组子字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23974937/

相关文章:

iOS 9 - CSSearchableItem 的 "domainIdentifier"

CoreLocation 中的 iOS 崩溃

ios - 使用从 HTML 构建的 NSAttributedString 时在 iOS7/8 UITextView 中进行字距调整

ios - UIScrollView 内的 CPTXYGraph

iphone - NSData 返回 0 字节

ios - 这段代码是错误的吗?

ios - Facebook SDK 登录 xcode 在获取 avater 时崩溃

ios - 当滚动/索引超出数组范围时 UITableView 崩溃

ios - 将对象的创建限制为 swift 4 中的工厂

iphone - 为什么这个关于 UIColor WhiteColor 的语句评估结果为 false?