我想比較字符串。但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