NSString
的localizedCaseInsensitiveCompare:
和localizedStandardCompare:
方法有什麼區別?本地化字符串比較
我讀了參考書,但沒有得到正確的想法。
NSString
的localizedCaseInsensitiveCompare:
和localizedStandardCompare:
方法有什麼區別?本地化字符串比較
我讀了參考書,但沒有得到正確的想法。
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:
。
酷。因此,localizedStandardCompare可以比caseInsensitiveCompare更多地理解字符串中的某些內容。感謝這些例子。 – sridevi 2013-03-15 16:07:52
後者各種各樣像取景器上OS X.
localizedCaseInsensitiveCompare:
類似於localizedCompare:
他們都返回一個NSComparisonResult
值,表示接收器,並使用本地化的比較,另一個定字符串的詞彙順序。
區別在於前者是case insensitive
。即當比較字符串時,它忽略了大寫和小寫字母的不同用法。
localizedStandardCompare
這比較了由Finder應用程序排序的字符串。
檢查此:http://stackoverflow.com/questions/7293996/sorting-coredata-entity-with-a-nscomparisonresult 其種類相似.. – Mrunal 2013-03-15 15:33:10