目标c比较字符串多个单词

时间:2013-01-05 18:08:03

标签: objective-c string comparison

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

4 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

您可以使用NSString' rangeOfString方法:

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

答案 2 :(得分:0)

如果您在较长的“I AM AWARE”中搜索“WAR”,则上述代码将返回1。也许你正在寻找完整的单词匹配 在这种情况下,您应该使用...

将长字符串拆分为单个单词数组
NSArray *singleWords = [multiWordString componentsSeparatedByString: @" "];

然后解析数组以找到 oneWordString

答案 3 :(得分:0)

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