我从用户那里拿一个字符串,然后对它进行一些迭代。
例如,用户输入了文字@“今天的天气很美。”;
我想在用户输入"the wether is beatifullll tdy"
或"th weather is beatttiful tooodayy"
或"the weatherrr iss beautiful toda"
时进行相同的迭代。
这是我的代码:
// (str is the user's text)
if ([str rangeOfString:@"hello" options:NSCaseInsensitiveSearch].location != NSNotFound) {
// when user entered helloo I want make to same iteration,
// but in this case the program goes else part.
[array insertObject:@"hello" atIndex:s];
} else if ([str rangeOfString:@"You are so beautiful" options:NSCaseInsensitiveSearch].location != NSNotFound ) {
[dizi insertObject:@"I know, Thanks" atIndex:s];
} else if ([str rangeOfString:@"Have Lunch?" options:NSCaseInsensitiveSearch].location != NSNotFound) {
[array insertObject:@"Yes,I have" atIndex:s];
} else {
[array insertObject:@"please,speak english" atIndex:s];
}
答案 0 :(得分:1)
您可以使用StringScore进行模糊匹配:
示例:
NSString *testString = @"Hello world!";
CGFloat result1 = [testString scoreAgainst:@"Hello world!"];
CGFloat result2 = [testString scoreAgainst:@"world"];
CGFloat result3 = [testString scoreAgainst:@"wXrld" fuzziness:[NSNumber numberWithFloat:0.8]];
CGFloat result4 = [testString scoreAgainst:@"world" fuzziness:nil options:NSStringScoreOptionFavorSmallerWords];
CGFloat result5 = [testString scoreAgainst:@"world" fuzziness:nil options:(NSStringScoreOptionFavorSmallerWords & NSStringScoreOptionReducedLongStringPenalty)];
CGFloat result6 = [testString scoreAgainst:@"HW"]; // abbreviation matching example
NSLog(@"Result 1 = %f", result1);
NSLog(@"Result 2 = %f", result2);
NSLog(@"Result 3 = %f", result3);
NSLog(@"Result 4 = %f", result4);
NSLog(@"Result 5 = %f", result5);
NSLog(@"Result 6 = %f", result6);
输出:
Result 1 = 1.000000
Result 2 = 0.425000
Result 3 = 0.271528
Result 4 = 0.250000
Result 5 = 0.425000
Result 6 = 0.645833