本地化字符串比较(String comparison for localization)

2019-08-17 15:36发布

是有什么区别NSStringlocalizedCaseInsensitiveCompare:localizedStandardCompare:方法?

我读了参考,但并没有得到使用哪一个正确的想法。

Answer 1:

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:



Answer 2:

后者像各种取景器上OS X.



Answer 3:

localizedCaseInsensitiveCompare:类似于localizedCompare:

他们都返回NSComparisonResult值,表示接收器,并使用本地化的比较,另一个定字符串的词汇顺序。

所不同的是,前者是case insensitive 。 也就是说,它比较字符串时忽略了不同使用大写和小写字母。

localizedStandardCompare通过Finder中的应用作为排序此比较字符串。



文章来源: String comparison for localization