我想比较字符串。但isEqualToString对我无用。因为我不希望他们完全一样。我的一个琴弦是列夫托尔斯泰,另一个是托尔斯泰;我希望他们被匹配。有任何想法吗?比较不完全相同的字符串
回答
如果你总是知道你正在寻找的子字符串,试试这个(这些词的顺序并不重要,所以即使“列夫托尔斯泰”将匹配):
NSString *string = @"Lev Tolstoy";
if ([string rangeOfString:@"Tolstoy"].location == NSNotFound) {
NSLog(@"string does not contain 'Tolstoy'");
} else {
NSLog(@"string contains 'Tolstoy'!");
}
有关的更多信息rangeOfString:
看看苹果documentation为NSString
对于更复杂的情况下,看看这个:像你想approximate/fuzzy string matching地方,而THA http://en.wikipedia.org/wiki/Comparison_of_programming_languages_%28string_functions%29
。非常感谢。你有什么想法,它会忽略人物是大还是小。我从textfield获得价值。如果用户写小,他们不匹配。 – 2012-02-23 13:11:36
有很多选择由NSString提供。
对于你的情况,你可以使用hasSuffix这样的:
NSString* str = @"Lev Tolstoy"
NSString* suffix = @"Tolstoy"
if ([str hasSuffix:suffix]) {
// do something useful
}
有根据您的测试将是什么,包括搜索与rangeOfString,或hasPrefix子许多其他的选择。
这听起来NA直截了当isEqual:
功能,基于精确匹配返回BOOL
,你有两个功能(上NSString
),用线沿线的原型:
- (NSUInteger)distanceToString:(NSString *)otherString;
- (BOOL)isSufficientlyCloseTo:(NSString *)otherString;
第二个是一个便利的包装,实现类似:
- (BOOL)isSufficientlyCloseTo:(NSString *)otherString {
return [self distanceToString:otherString] <= MY_MAGIC_THRESHOLD;
}
所以你基本上需要一个距离函数和一个相等的阈值。距离函数的一个简单示例应该是the Levenshtein distance - 然后您需要通过实验为MY_MAGIC_THRESHOLD
选择一个值,以便您对结果感到满意。
- 1. 比较2个完全相同的字符串返回false
- 2. '完全相同'的字符串不同
- 3. 比较2完全相同的字符串结果是否为false?
- 4. 全局字符串比较
- 5. 比较不完全匹配的字符串
- 6. 如果包含相同的字符串比较相同的字符串键python
- 7. sas宏字符串比较不等同于相同的方式
- 8. 如何比较Unicode字符串,使看起来相同的字符串比较相同?
- 9. 比较不同编码的字符串
- 10. 字符串比较为相同字符串返回false
- 11. Javascript字符串比较不完全等于
- 12. 字符串到base64字节,完全相同的文字字符
- 13. 比较在字节级别上按字典顺序等效但不完全相同的两个字符串
- 14. 如何比较包含相同字符的2个字符串
- 15. 比较字符串值不同
- 16. 字符串比较行为不同
- 17. Strcmp比较相同的字符串,但不进入循环
- 18. 相同的字符串比较不工作mysql
- 19. R - 比较类似但不相同的字符串
- 20. 字符串比较C# - 全字匹配
- 21. PHP不会比相同的字符串
- 22. 比较一个字符串和几个不同的字符串
- 23. 比较字符串,返回不同的字符串
- 24. 比较字符串的相似之处?
- 25. 比较字符串的长度相等
- 26. C#比较相似的字符串
- 27. 比较声音文件,如果不完全相同
- 28. 比较两个浮点值 - 不完全相同
- 29. 字符串不比较
- 30. 较不敏感的字符串比较
这与规范太模糊了。你想要所有有共同字的字符串匹配吗?或者你想只匹配名字? – 2012-02-23 10:36:13
你有什么想法,它会忽略人物是大还是小。我从textfield获得价值。如果用户写小,他们不匹配。它的工作原理是 – 2012-02-23 14:01:05