0

こんにちは、目的の c を使用して 2 つの文字列を比較しようとしています。1 つの文字列は 1 つの単語で、もう 1 つの文字列は 1 つまたは複数の単語です。単語レベルで一致を確認するにはどうすればよいですか? つまり、複数の単語の文字列のいずれかの単語が単一の単語の文字列と一致する場合は 1 を返し、それ以外の場合は 0 を返しますか? どんな助けでも大歓迎です。

4

4 に答える 4

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

NSStringrangeOfStringメソッドを使用できます。

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