比较字符串

使用 isEqualToString:比较字符串的相等性

== 运算符只测试对象标识并且不比较对象的逻辑值,因此不能使用它:

NSString *stringOne = @"example";
NSString *stringTwo = [stringOne mutableCopy];

BOOL objectsAreIdentical = (stringOne == stringTwo);          // NO
BOOL stringsAreEqual = [stringOne isEqualToString:stringTwo]; // YES

表达式 (stringOne == stringTwo) 测试两个字符串的内存地址是否相同,这通常不是我们想要的。

如果字符串变量可以是 nil,你也必须注意这个案例:

BOOL equalValues = stringOne == stringTwo || [stringOne isEqualToString:stringTwo];

当字符串具有相等的值或两者都是 nil 时,此条件返回 YES

要按字母顺序排列两个字符串,请使用 compare:。

NSComparisonResult result = [firstString compare:secondString];

NSComparisonResult 可以是:

  • NSOrderedAscending:第一个字符串出现在第二个字符串之前。
  • NSOrderedSame:字符串相等。
  • NSOrderedDescending:第二个字符串出现在第一个字符串之前。

要比较两个字符串的相等性,请使用 isEqualToString:

BOOL result = [firstString isEqualToString:secondString];

要与空字符串(@"")进行比较,最好使用 length

BOOL result = string.length == 0;