2013-01-05 106 views
0

嗨我期待比较2个字符串使用目标c。一个字符串是一个单词,另一个是一个或多个单词。我怎样才能在单词级别上进行匹配?也就是说,如果来自多个单词字符串的任何单词匹配我的单个单词字符串,则返回a 1 else返回0?任何帮助非常感谢。客观c比较字符串多字

回答

0

您可以使用NSStringrangeOfString方法:

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

哦,很高兴看到这一点。我期待第一个答案建议使用'NSRegularExpression' ...:P – 2013-01-05 18:16:13

+1

“现在你有两个问题......”:-) –

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); 
0

如果您在更长的“I AM AWARE”内搜索“WAR”,上面的代码将返回1。也许你正在寻找完整的单词匹配。
在这种情况下,你应该长字符串分割成使用的单个单词阵列...

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

然后解析阵列找到字符串中的oneWordString

0

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