NSString
的{{1}}和localizedCaseInsensitiveCompare:
方法之间有什么区别?
我阅读了参考文献,但没有弄清楚要使用哪一个。
答案 0 :(得分:10)
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:
。
答案 1 :(得分:0)
后者在OS X上像Finder一样排序。
答案 2 :(得分:0)
localizedCaseInsensitiveCompare:
与localizedCompare:
它们都返回一个NSComparisonResult
值,表示接收器的词法排序,另一个给定的字符串使用本地化比较。
不同之处在于前者是case insensitive
。即,在比较字符串时,它忽略了对大写和小写字母的不同使用。
localizedStandardCompare
这会比较由Finder应用程序排序的字符串。