NSString
'slocalizedCaseInsensitiveCompare:
和localizedStandardCompare:
methods和有什么不一样?
我阅读了参考资料,但没有正确了解该使用哪一个。
NSString
'slocalizedCaseInsensitiveCompare:
和localizedStandardCompare:
methods和有什么不一样?
我阅读了参考资料,但没有正确了解该使用哪一个。
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]];
因此,主要区别在于如何比较字符串中的数字。
比较以下 3 个字符串 usinglocalizedCaseInsensitiveCompare:
将导致以下顺序:
"Foo2.txt",
"Foo25.txt",
"Foo7.txt"
另一方面,比较它们使用localizedStandardCompare:
将导致以下顺序:
"Foo2.txt",
"Foo7.txt",
"Foo25.txt"
虽然该localizedCaseInsensitiveCompare:
方法一直存在,但localizedStandardCompare:
最近才添加(OS X 10.6)。Finder 使用数字方法对文件名进行排序,在添加 之前localizedStandardCompare:
,开发人员没有一种简单的方法来确保他们可以像 Finder 那样对字符串进行排序。
在确定使用哪一个时,如果您要比较的字符串代表文件名,那么您绝对应该倾向于使用localizedStandardCompare:
.
后者类似于 OS X 上的 Finder。
localizedCaseInsensitiveCompare:
类似于localizedCompare:
它们都返回一个NSComparisonResult
值,该值指示接收器的词法顺序和另一个使用本地化比较的给定字符串。
区别在于前者是case insensitive
。即它在比较字符串时忽略了大写和小写字母的不同用法。
localizedStandardCompare
这将比较由 Finder 应用程序排序的字符串。