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