是有什么区别NSString
的localizedCaseInsensitiveCompare:
和localizedStandardCompare:
方法?
我读了参考,但并没有得到使用哪一个正确的想法。
是有什么区别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]];
因此,主要的区别是在字符串中的数字的比较方式。
比较使用以下3串localizedCaseInsensitiveCompare:
会导致下面的命令:
"Foo2.txt",
"Foo25.txt",
"Foo7.txt"
在另一方面,通过比较它们localizedStandardCompare:
会导致下面的命令:
"Foo2.txt",
"Foo7.txt",
"Foo25.txt"
虽然localizedCaseInsensitiveCompare:
方法已经撒手人寰时, localizedStandardCompare:
是最近才加入(OS X 10.6)。 取景器排序使用数字方法的文件名,在此之前加入到localizedStandardCompare:
开发商是没有一个简单的方法,以确保他们能排序串像Finder中一样。
在确定要使用哪一个,如果您要比较的字符串表示文件名,那么你一定要倾向于使用往往localizedStandardCompare:
后者像各种取景器上OS X.
localizedCaseInsensitiveCompare:
类似于localizedCompare:
他们都返回NSComparisonResult
值,表示接收器,并使用本地化的比较,另一个定字符串的词汇顺序。
所不同的是,前者是case insensitive
。 也就是说,它比较字符串时忽略了不同使用大写和小写字母。
localizedStandardCompare
通过Finder中的应用作为排序此比较字符串。