您好我想使用目标c比较2个字符串。一个字符串是一个单词,另一个字符串是一个或多个单词。如何在单词级别上搜索匹配?即如果多个单词串中的任何单词与我的单个单词串匹配,则返回1,否则返回0?任何帮助非常感谢。
答案 0 :(得分:2)
您可能想要使用-[NSString rangeOfString:]
:
if ([multipleWords rangeOfString:singleWord].location != NSNotFound)
return YES;
return NO;
但它并不完美。你可以"返回"在multipleWords
和singleWord
中可以"返回",给你一个误报。
所以我们必须使用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]]
将字符串中的单词拆分为数组。然后,您可以检查数组中的每个单词,看它是否与搜索的单个单词匹配。这不是最有效的方式,但它可以满足您的需求。