web-dev-qa-db-ja.com

大文字と小文字を区別しないNSStringの比較

このコードを使用して、文字列値を比較できます。

[elementName isEqualToString: @"Response"]

しかし、これは大文字と小文字を区別して比較します。大文字と小文字を区別せずに文字列を比較する方法はありますか?

13
user198725878

あります caseInsensitiveCompare:NSStringのメソッド、読んでみませんか ドキュメント ?このメソッドはNSComparisonResultを返します。

enum {
   NSOrderedAscending = -1,
   NSOrderedSame,
   NSOrderedDescending
};
typedef NSInteger NSComparisonResult;

…ああ、申し訳ありませんが、ちょうど今、あなたが大文字と小文字を区別する平等を求めていることに気づきました。 (質問を読まないのはなぜですか?:-)デフォルトのisEqual:またはisEqualToString:平等はすでに大文字と小文字を区別する必要がありますが、何が得られますか?

31
zoul

文字列が小文字か大文字かを気にせずに文字列を比較するために必要なコードは次のとおりです。

if ([elementName caseInsensitiveCompare:@"Response"]==NSOrderedSame)
{
    //  Your "elementName" variable IS "Response", "response", "reSPonse", etc
    //  
}
14
Mike Gledhill

実際にはisEqualToString:大文字と小文字を区別する機能で動作します。なので:

[elementName isEqualToString: @"Response"];

大文字と小文字を区別しない比較を要求する場合は、次のコードを使用します。

比較可能な両方の文字列を小文字または大文字に変更でき、次のように比較できます。

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

}
7
iPhoneDv
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");
}
1
Amr Lotfy