如何比较两个不区分大小写的string?

我有2个string对象包含相同的string,但情况是不同的,现在我想比较他们忽略大小写敏感,如何做到这一点??这里是代码…

#import <Foundation/Foundation.h> void main() { NSString *myString1 = @"mphasis"; NSString *myString2 = @"MPHASIS"; if ([myString1 caseInsenstiveCompare:myString2]) { NSLog (@"ITS EQUAL"); } else { NSLog (@"ITS NOT EQUAL"); } } 

如果你查看caseInsensitiveCompare: 在文档中你会看到它返回一个NSComparisonResult而不是BOOL。 在文档中查看,你会发现你可能希望它是NSOrderedSame。 所以

if ([myString1 caseInsensitiveCompare:myString2] == NSOrderedSame)

应该做的伎俩。 或者像罗伯特所build议的那样比较小写string。

只要在两个string上使用lowercaseString,然后像使用普通string相等性检查一样比较它们。 它仍然是O(N)所以没有什么大不了的。

我宁愿build议在NSString上添加一个类别:

 - (BOOL)isEqualIgnoreCaseToString:(NSString *)iString { return ([self caseInsensitiveCompare:iString] == NSOrderedSame); } 

有了这个,你可以简单地调用:

 [myString1 isEqualIgnoreCaseToString:myString2]; 

为了保存方法调用,我通过#define使用了一个macros:

 #define isEqualIgnoreCaseToString(string1, string2) ([string1 caseInsensitiveCompare:string2] == NSOrderedSame) 

然后打电话:

 (BOOL) option = isEqualIgnoreCaseToString(compareString, toString); 

一个简单的,转换两个string在同一case.Here我转换成小写,然后检查它。

 if ([[myString1 lowercaseString] [myString2 lowercaseString]]) { // same }