如何比较两个不区分大小写的字符串?

pra*_*and 6 objective-c nsstring ios

我有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");  
    }  
}  
Run Code Online (Sandbox Code Playgroud)

Mar*_*aek 34

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

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

应该做的伎俩.或者只是比较罗伯特建议的小写字符串.


Rob*_*oli 7

只需在两个字符串上使用lowercaseString,然后像使用普通字符串相等性检查一样比较它们.它仍然是O(n)所以没什么大不了的.


Abh*_*nav 5

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

- (BOOL)isEqualIgnoreCaseToString:(NSString *)iString {
    return ([self caseInsensitiveCompare:iString] == NSOrderedSame);
}
Run Code Online (Sandbox Code Playgroud)

这样,您可以简单地调用:

[myString1 isEqualIgnoreCaseToString:myString2];
Run Code Online (Sandbox Code Playgroud)