Objective-C中的字符串比較
Objective-C中,NSString的==操作符比較的是字符串地址,不是字符串內(nèi)容,如果需要比較內(nèi)容則需要使用isEqualToString:方法。具體的介紹可以看這里. 但是Xcode會(huì)對(duì)部分字符串做優(yōu)化,相同的字符串會(huì)使用同一份拷貝,所以有時(shí)候也會(huì)出現(xiàn)意想不到的“正確”結(jié)果,比如:
- NSString *str1 = @"Homebrew";
- NSString *str2 = @"Homebrew";
- // This compares the addresses of the string
- if (str1 == str2)
- NSLog (@"str1 equals str2");
- else
- NSLog (@"str1 does not equal str2");
這段代碼會(huì)打印出 str1 equals str2,但是這樣就不會(huì):
- // Create a C string
- char *cStr = "Homebrew";
- NSString *str3 = [NSString stringWithUTF8String:cStr];
- NSString *str4 = @"Homebrew";
- // Wrong - this compares the address of the string
- if (str3 == str4)
- NSLog (@"str3 equals str4");
- else
- NSLog (@"str3 does not equal str4");
另外,正確的字符串內(nèi)容比較方法為:
- char *cStr = "Homebrew"; NSString *str3 = [NSString stringWithUTF8String:cStr]; NSString *str4 = @"Homebrew"; if ([str3 isEqualToString:str4]) NSLog (@"str3 equals str4"); else NSLog (@"str3 does not equal str4");
原文地址:http://all-ipad.net/string-compare-in-objective-c/?utm_source=rss&utm_medium=rss&utm_campaign=string-compare-in-objective-c