2013-03-15 35 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应用程序排序的字符串。