23

if ステートメントを使用して、2 つの文字列のどちらがアルファベット順に最初に来るかを調べようとしています。数値と大なり小なりのように:

if (1 < 2) {

文字列だけで:

if(@"ahello" < @"bhello") {

または、すべての文字を含む文字列を作成してから、各文字列の最初の文字のインデックスを確認し、どのインデックスが大きいかを確認し、他のインデックスよりも小さいインデックスがアルファベットの最初に来る必要がありますか?次の文字に移動して繰り返しますか?

4

2 に答える 2

39

あなたができることは次のとおりです。

NSString *stringOne = @"abcdef";
NSString *stringTwo = @"defabc";

NSComparisonResult result = [stringOne compare:stringTwo];

if (result == NSOrderedAscending) // stringOne < stringTwo
    ...

if (result == NSOrderedDescending) // stringOne > stringTwo
    ...

if (result == NSOrderedSame) // stringOne == stringTwo
    ...

さまざまな種類の比較(大文字と小文字の区別、発音区別符号の区別など)を実行する方法は他にもありますが、比較の結果は上記のように扱うことができます。resultあるいは、 0と比較する方が簡単だと感じる人もいます。0と比較するために使用さresultれる演算子は、文字列の比較を直接実行できる他の言語で使用される演算子と同じです。

if (result < 0) // stringOne < stringTwo
    ...

if (result > 0) // stringOne > stringTwo
    ...

if (result == 0) // stringOne == stringTwo
    ...

NSStringのメソッドのほとんど(すべてではないにしても)は、のcompare:...ラッパーですcompare:options:range:locale:。渡すことができるさまざまな種類のオプションは、ここにあります。

于 2010-05-23T21:04:27.807 に答える
4

NSString には、compare:必要なことだけを行うためのメソッドが多数あります。非常にシンプルなものもあれば、動作をカスタマイズするために使用できるオプションがたくさんあるものもあります。ドキュメントを確認してください。

于 2010-05-23T17:47:33.523 に答える