我有2个字符串对象包含相同的字符串,但情况不同,现在我想比较它们忽略区分大小写,怎么做?这里是代码...
#import <Foundation/Foundation.h>
void main()
{
NSString *myString1 = @"mphasis";
NSString *myString2 = @"MPHASIS";
if ([myString1 caseInsenstiveCompare:myString2])
{
NSLog (@"ITS EQUAL");
}
else
{
NSLog (@"ITS NOT EQUAL");
}
}
答案 0 :(得分:34)
如果你查看caseInsensitiveCompare:in the docs,你会看到它返回一个NSComparisonResult而不是BOOL。向上看in the docs,你会发现你可能希望它是NSOrderedSame。所以
if ([myString1 caseInsensitiveCompare:myString2] == NSOrderedSame)
应该做的伎俩。或者只是比较罗伯特建议的小写字符串。
答案 1 :(得分:7)
只需在两个字符串上使用lowercaseString,然后像使用普通字符串相等性检查一样对它们进行比较。它仍然是O(n)所以没什么大不了的。
答案 2 :(得分:4)
我建议在NSString上添加一个类别:
- (BOOL)isEqualIgnoreCaseToString:(NSString *)iString {
return ([self caseInsensitiveCompare:iString] == NSOrderedSame);
}
有了这个,您只需致电:
[myString1 isEqualIgnoreCaseToString:myString2];
答案 3 :(得分:1)
要保存方法调用,我通过#define
:
#define isEqualIgnoreCaseToString(string1, string2) ([string1 caseInsensitiveCompare:string2] == NSOrderedSame)
然后致电:
(BOOL) option = isEqualIgnoreCaseToString(compareString, toString);
答案 4 :(得分:1)
一个简单的,在相同的情况下转换两个字符串。我将它转换为小写然后检查它。
if ([[myString1 lowercaseString] [myString2 lowercaseString]])
{
// same
}