1

文字列の逆を与えるメソッドを作成したいと思います。メソッドに NSString "Welcome to Objective C" を渡し、そのメソッドが "C evitcejbO ot emocleW" ではなく "C Objective to Welcome" のような文字列の逆を返すとします。 componentsSeparatedByString メソッドの。Objective c..で行うことは可能ですか? 助けてください。

4

6 に答える 6

6

単語ごとに文字列を列挙できます。

NSString *string = @"Welcome to Objective-C!";

NSMutableArray *words = [NSMutableArray array];

[string enumerateLinguisticTagsInRange:NSMakeRange(0, [string length])
                                scheme:NSLinguisticTagSchemeTokenType
                               options:0
                           orthography:nil
                            usingBlock:^(NSString *tag, NSRange tokenRange, NSRange sentenceRange, BOOL *stop) {
                                [array addObject:[string substringWithRange:tokenRange]];
                            }];

NSMutableString *reverseString = [[NSMutableString alloc] init];

for (NSString *word in [words reverseObjectEnumerator]){
    [reverse appendString:word];
}

NSLog(@"%@", reverseString);

これは印刷されます...

"!C-Objective to Welcome"

オプションを変更して、空白などを省略することができます...

于 2013-05-09T10:36:34.037 に答える
2

iOSで文字列を逆にするために以下の方法を使用しました

- (NSString *)reverseString:(NSString *)stringToReverse
{
    NSMutableString *reversedString = [NSMutableString stringWithCapacity:[stringToReverse length]];
    [stringToReverse enumerateSubstringsInRange:NSMakeRange(0, [stringToReverse length])
                                        options:(NSStringEnumerationReverse | NSStringEnumerationByComposedCharacterSequences)
                                     usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {
            [reversedString appendString:substring];
    }];
    return reversedString;
}
于 2015-03-17T10:48:55.043 に答える
1

申し訳ありませんが、以前の質問を読み違えました。私は一連のループを使用してそれを行いました.私の答えはフォグマイスターよりも厄介ですが、それができるかどうかを試してみたかった.

NSString *str = @"This is a test";


    NSMutableArray *array = [[NSMutableArray alloc] init];

    for(int i = 0; i < [str length]; i++)
    {
        char sTest = [str characterAtIndex:i];
        if(sTest == ' ')
        {
            [array addObject:[NSNumber numberWithInt:i]];
        }
    }

    NSInteger iNext = [[array objectAtIndex:[array count]-1] integerValue];
    iNext+=1;

    if(iNext < [str length])
    {
       [array addObject:[NSNumber numberWithInt:iNext]]; 
    }

    NSMutableArray *wordArray = [[NSMutableArray alloc] init];

    for(int i = 0; i < [array count]; i++)
    {
        if (i == 0)
        {
            int num = [[array objectAtIndex:i] integerValue];
            NSString *s = [[str substringFromIndex:0] substringToIndex:num];
            [wordArray addObject:s];

        }
        else if(i == [array count]-1)
        {
            int prev = [[array objectAtIndex:i-1] integerValue]+1;
            int num =  [str length];
            NSString *s = [[str substringToIndex:num] substringFromIndex:prev];
            [wordArray addObject:s];
        }
        else
        {
            int prev = [[array objectAtIndex:i-1] integerValue]+1;
            int num = [[array objectAtIndex:i] integerValue];

            NSString *s = [[str substringToIndex:num] substringFromIndex:prev];
            [wordArray addObject:s];
        }
    }

    NSMutableArray *reverseArray = [[NSMutableArray alloc]init];
    for(int i = [wordArray count]-1; i >= 0; i--)
    {

        [reverseArray addObject:[wordArray objectAtIndex:i]];
    }
    NSLog(@"%@", reverseArray);
于 2013-05-09T11:07:22.470 に答える
0

それがあなたが求めているものである場合、それを行うためのAPIはありません。

空白 (または句読点、必要に応じて異なります) を探して文字列をいつでも反復処理し、単語を識別して、「反転した」メッセージを手動で再構成できます。

于 2013-05-09T10:28:23.550 に答える