0

文を逆にしたいのですが、問題なく高速列挙で次のオブジェクトを正しく取得する方法がわかりません:/

- (NSString *) reverseWords
{
    NSString    *result = [[NSString alloc] init];
    NSArray     *tab_words = [self componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
    NSEnumerator    *reversed = [tab_words reverseObjectEnumerator];
    for (NSString *word in reversed)
    {
        result = [result stringByAppendingString:word];
        // Bug here
        if ([reversed nextObject])
            result = [result stringByAppendingString:@" "];
    }
    return (result);
}

ありがとうございます

4

2 に答える 2

1

文を列挙するよりも簡単に文を逆にする方法があります。反転した配列を取得し、(メソッドを使用して) スペースで結合して、componentsJoinedByString:別の NSString を生成できます。

- (NSString *) reverseWords
{
    NSArray *tab_words  = [self componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
    NSArray *reversed   = [[tab_words reverseObjectEnumerator] allObjects];
    NSString *result    = [reversed componentsJoinedByString:@" "];
}   
于 2012-06-21T15:13:32.880 に答える
0

配列を逆にしてから、NSArray のcomponentsJoinedByString:方法を使用することをお勧めします。配列の反転に関するクイックリファレンスについては、この SO の質問

これは既存のコードと非常に似ていますが、既存のループを使用して中間配列を構築するという単純な追加の手順が追加されています。componentsJoinedByString次に、戻り文字列を取得するための最後の呼び出しを追加します。

于 2012-06-21T15:14:40.650 に答える