【问题标题】:Objective c comparing strings multiple wordsObjective c比较字符串多个单词
【发布时间】:2013-01-05 18:08:02
【问题描述】:

您好,我正在寻找使用目标 c 比较 2 个字符串。一个字符串是一个单词,另一个字符串是一个或多个单词。如何在单词级别检查匹配项?即,如果多个单词字符串中的任何单词与我的单个单词字符串匹配,则返回 1 否则返回 0 ?非常感谢任何帮助。

【问题讨论】:

    标签: objective-c string comparison


    【解决方案1】:

    您可能想使用-[NSString rangeOfString:]

    if ([multipleWords rangeOfString:singleWord].location != NSNotFound)
        return YES;
    return NO;
    

    但它并不完美。你可能在multipleWordssingleWord 中有“返回”,可能是“返回”,给你一个误报。

    所以我们必须使用NSRegularExpression

    NSString *single = @"returning";
    NSString *multiple = @"a man is returning home";
    NSString *pattern = [NSString stringWithFormat:@"\\b%@\\b",single];
    NSError *error = nil;
    NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:pattern
                                                                           options:NSRegularExpressionCaseInsensitive
                                                                             error:&error];
    
    NSRange range = NSMakeRange(0, multiple.length);
    NSUInteger matched = [regex numberOfMatchesInString:multiple options:0 range:range];
    NSLog(@"number of matched = %ld", matched);
    

    【讨论】:

      【解决方案2】:

      你可以使用NSStringrangeOfString方法:

      NSRange range = [multiWordString rangeOfString:oneWordString];
      if (range.location == NSNotFound)
          return 0;
      else
          return 1;
      

      【讨论】:

      • 哦,很高兴看到这一点。我期待第一个答案建议使用NSRegularExpression...:P
      • "现在你有两个问题..." :-)
      【解决方案3】:

      如果您在较长的“I AM AWARE”中搜索“WAR”,上述代码将返回 1。也许您正在寻找整个单词匹配。
      在这种情况下,您应该使用...将长字符串拆分为单个单词的数组。

      NSArray *singleWords = [multiWordString componentsSeparatedByString: @" "];
      

      然后解析数组找到oneWordString

      【讨论】:

        【解决方案4】:

        您可以使用[string componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] 将字符串中的单词拆分为一个数组。然后,您可以检查数组中的每个单词以查看它是否与正在搜索的单个单词匹配。这不是最有效的方式,但可以满足您的需求。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-04-27
          • 1970-01-01
          • 2011-02-05
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多