7

とメソッドNSStringの違いは何ですか?localizedCaseInsensitiveCompare:localizedStandardCompare:

リファレンスを読みましたが、どれを使用するかについて適切なアイデアが得られませんでした。

4

3 に答える 3

12

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 X10.6)。Finderは数値方式を使用してファイル名を並べ替えますが、を追加する前はlocalizedStandardCompare:、開発者はFinderのように文字列を並べ替えることができることを保証する簡単な方法がありませんでした。

どちらを使用するかを決定するときに、比較している文字列がファイル名を表す場合は、間違いなく。を使用する傾向がありますlocalizedStandardCompare:

于 2013-03-15T15:46:49.537 に答える
0

後者は、OSXのFinderのように分類されます。

于 2013-03-15T15:38:15.867 に答える
0

localizedCaseInsensitiveCompare:と類似していますlocalizedCompare:

NSComparisonResultこれらは両方とも、ローカライズされた比較を使用して、レシーバーの辞書式順序と別の指定された文字列を示す値を返します。

違いは前者がですcase insensitive。つまり、文字列を比較するときに大文字と小文字の異なる使用法を無視します。

localizedStandardCompare これは、Finderアプリケーションによってソートされた文字列を比較します。

于 2013-03-15T15:46:13.427 に答える