2011-10-04 105 views
0

我知道有可能使用方法compare:isEqualToString:,我想isEqualToString是最有效的方法如果你知道它是一個字符串。但我的問題是,還有另一種更有效的方法嗎?就像比較字符或類似的東西。如何有效比較兩個NSString

+1

你爲什麼認爲'比較:'和'isEqualToString:'對你來說效率不夠? – Alex

+0

我不知道我想知道它,因爲我的程序使用這個函數很多,但daveoncode的答案讓我頭疼。 – Gustavo

回答

4

通過讀取文檔:

比較使用串的規範表示,這對於一個特定的字符串是字符串加上Unicode字符組成的字符串的長度。當此方法比較兩個字符串時,如果單個Unicode相同,則字符串相等,而不管後備存儲如何。當應用於字符串比較時,「文字」意味着不應用各種Unicode分解規則,並且單獨比較Unicode字符。因此,例如,表示爲組合字符序列「O」的「Ö」,並且變音符不會等於表示爲一個Unicode字符的「Ö」。

和:

當你知道這兩個對象都是字符串,這個方法是檢查平等的isEqual相比更快的方法:。

它似乎是最好的方法來比較字符串,並且它完全符合您的需要,即:首先檢查長度(如果2個字符串具有不同的長度,則不需要檢查每個包含的字符),那麼如果長度相同,則比較每個字符。簡單而高效!

3

isEqualToString:如果您知道兩個對象都是字符串,則會更快,如documentation所述。

1

您可以嘗試將這兩個字符串轉換爲C字符串,然後使用strcmp。懷疑它實際上會更快。

char *str1 = [myNSString1 UTF8String]; 
char *str2 = [myNSString2 UTF8String]; 
BOOL isEqual = strcmp(str1,str2);