在Objective-C中使用for循环反向字符串

时间:2017-02-02 22:36:59

标签: objective-c for-loop

刚刚学习objective-c,我试图使用一个简单的for循环来反转一个字符串。我不确定我在这里缺少什么部分。任何帮助将不胜感激。

NSString *input = @"Hello world";

NSMutableString *reversedString = [NSMutableString string];

for(int i =0; i<input.length;i--){

    [reversedString appendString:input];

}

1 个答案:

答案 0 :(得分:0)

那里有两个错误。

首先,for循环。您必须从最后一个索引开始并以零结束:

for (NSInteger i = input.length - 1; i >= 0; i--) {

其次,你总是附加整个字符串,而不是字符。

NSString *character = [input substringWithRange:NSMakeRange(i, 1)];
[reversedString appendString:character];

(我正在从索引i开始一个长度为1的子字符串。)

另一种方式是:

unichar character = [input characterAtIndex:i];
[reversedString appendFormat:@"%C", character];

更高级的选项是:

[input enumerateSubstringsInRange:NSMakeRange(0, input.length)
                          options:(NSStringEnumerationByComposedCharacterSequences | NSStringEnumerationReverse)
                       usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {
                                   [reversedString appendString:substring];
                               }];