2013-03-15 37 views
3

NSStringlocalizedCaseInsensitiveCompare:localizedStandardCompare:方法有什麼區別?本地化字符串比較

我讀了參考書,但沒有得到正確的想法。

+0

檢查此:http://stackoverflow.com/questions/7293996/sorting-coredata-entity-with-a-nscomparisonresult 其種類相似.. – Mrunal 2013-03-15 15:33:10

回答

8

localizedCaseInsensitiveCompare:等同於:

[aString compare:otherString 
     options:NSCaseInsensitiveSearch 
     range:NSMakeRange(0,aString.length) 
     locale:[NSLocale currentLocale]]; 

localizedStandardCompare:基本上等同於:

[aString compare:otherString 
     options:NSCaseInsensitiveSearch | NSNumericSearch 
     range:NSMakeRange(0,aString.length) 
     locale:[NSLocale currentLocale]]; 

所以,主要的區別是在字符串中的數字的比較方式。

使用localizedCaseInsensitiveCompare:會導致以下順序比較以下3個字符串:

"Foo2.txt", 
"Foo25.txt", 
"Foo7.txt" 

在另一方面,使用localizedStandardCompare:會導致以下順序比較它們:

"Foo2.txt", 
"Foo7.txt", 
"Foo25.txt" 

雖然localizedCaseInsensitiveCompare:方法一直存在,localizedStandardCompare:最近才被添加(OS X 10.6)。 Finder使用數字方法對文件名進行排序,並且在添加localizedStandardCompare:之前,開發人員沒有簡單的方法來確保他們可以像Finder那樣對字符串進行排序。

當決定使用哪一個時,如果您比較的字符串代表文件名,那麼您應該傾向於使用localizedStandardCompare:

+0

酷。因此,localizedStandardCompare可以比caseInsensitiveCompare更多地理解字符串中的某些內容。感謝這些例子。 – sridevi 2013-03-15 16:07:52

0

後者各種各樣像取景器上OS X.

0

localizedCaseInsensitiveCompare:類似於localizedCompare:

他們都返回一個NSComparisonResult值,表示接收器,並使用本地化的比較,另一個定字符串的詞彙順序。

區別在於前者是case insensitive。即當比較字符串時,它忽略了大寫和小寫字母的不同用法。

localizedStandardCompare 這比較了由Finder應用程序排序的字符串。