0

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

4

4 回答 4

2

您可能很想使用-[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);
于 2013-01-05T18:23:58.863 回答
0

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

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

然后解析数组找到oneWordString

于 2013-01-05T18:28:26.420 回答
0

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

于 2013-01-13T11:56:29.377 回答
0

您可以使用NSString'srangeOfString方法:

NSRange range = [multiWordString rangeOfString:oneWordString];
if (range.location == NSNotFound)
    return 0;
else
    return 1;
于 2013-01-05T18:14:16.810 回答