Case-insensitive NSString comparison
Using this code I am able to compare string values.
[elementName isEqualToStri开发者_运维问答ng: @"Response"]
But this compares case-sensitively. Is there a way to compare the string without case sensitivity?
There’s a caseInsensitiveCompare:
method on NSString
, why don’t you read the documentation? The method returns NSComparisonResult
:
enum {
NSOrderedAscending = -1,
NSOrderedSame,
NSOrderedDescending
};
typedef NSInteger NSComparisonResult;
…ah, sorry, just now I realized you are asking for case sensitive equality. (Why don’t I read the question? :-) The default isEqual:
or isEqualToString:
equality should already be case sensitive, what gives?
Here's the code you would need to compare a string without caring about whether it's lowercase or uppercase:
if ([elementName caseInsensitiveCompare:@"Response"]==NSOrderedSame)
{
// Your "elementName" variable IS "Response", "response", "reSPonse", etc
//
}
Actually isEqualToString: works with case sensitive ability. as:
[elementName isEqualToString: @"Response"];
if you want to ask for case insensitive compare then here is the code:
You can change both comparable string to lowerCase or uppercase, and can compare as:
NSString *tempString = @"Response";
NSString *string1 = [elementName lowercaseString];
NSString *string2 = [tempString lowercaseString];
//The same code changes both strings in lowerCase.
//Now You Can compare
if([string1 isEqualToString:string2])
{
//Type your code here
}
NSString *string1 = @"stringABC";
NSString *string2 = @"STRINGDEF";
NSComparisonResult result = [string1 caseInsensitiveCompare:string2];
if (result == NSOrderedAscending) {
NSLog(@"string1 comes before string2");
} else if (result == NSOrderedSame) {
NSLog(@"We're comparing the same string");
} else if (result == NSOrderedDescending) {
NSLog(@"string2 comes before string1");
}
精彩评论