localizedStandardCompare

localizedStandardCompare

NSStringlocalizedCaseInsensitiveCompare: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:

08-05 08:20