比較字串

使用 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;