打印字符串的反转

Din*_*kar 0 iphone objective-c ipad

我正在编写一个程序,它在文本字段中打印字符串的反转,从另一个文本字段中获取输入文本.在将文本输入到一个文本字段后按Enter键时,结果(反向)应显示在另一个文本字段中.

我试过这样,但结果很奇怪.

.h文件:

#import <UIKit/UIKit.h>


@interface reverseVC : UIViewController {

    UITextField *textEntered;
    UITextField *textDisplay;

}
@property (nonatomic,retain) IBOutlet UITextField *textDisplay;
@property (nonatomic,retain) IBOutlet UITextField *textEntered;

- (NSMutableArray*) stringReverse;
- (IBAction) enter;

@end
Run Code Online (Sandbox Code Playgroud)

.m文件

- (NSMutableArray *) stringReverse
{

    NSString *value = textEntered.text;
    NSArray *tempArray = [[[NSArray alloc] initWithObjects:value,nil] autorelease];

    NSMutableArray *arr = [[[NSMutableArray alloc] init] autorelease];


    for (int i=[tempArray count]-1; i>=0; i--)
    {
        [arr addObject:[tempArray objectAtIndex:i]];
        NSLog(@"the object is:%c",arr);
    }

    return arr;
}
-(IBAction)enter
{
   textDisplay.text = [NSString stringWithFormat:@"%c",[self stringReverse]];
}
Run Code Online (Sandbox Code Playgroud)

之前在数组初始化中放置nil和autorelease之前得到了SIG_ABT和EXE_BAD_ACCESS之类的警告.现在警告已经解决,但结果不合需要.

我哪里错了?

Pie*_*rre 9

您在数组中插入NSString对象.它的计数是1.你必须从字符串的末尾到开头,并将字符附加到一个新的字符串.你可以这样做:

-(NSString*)reverseString:(NSString*)string {
    NSMutableString *reversedString;
    int length = [string length];
    reversedString = [NSMutableString stringWithCapacity:length];

    while (length--) {
            [reversedString appendFormat:@"%C", [string characterAtIndex:length]];
    }

    return reversedString;
}
Run Code Online (Sandbox Code Playgroud)


Anu*_*rag 5

反转字符串的另一种方法是使用反向字符串枚举器.

- (NSString *)reverseString:(NSString *)string {
    NSMutableString *reversedString = [[NSMutableString alloc] init];
    NSRange fullRange = [string rangeOfString:string];
    NSStringEnumerationOptions enumerationOptions = (NSStringEnumerationReverse | NSStringEnumerationByComposedCharacterSequences);
    [string enumerateSubstringsInRange:fullRange options:enumerationOptions usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {
        [reversedString appendString:substring];
    }];
    return reversedString;
}
Run Code Online (Sandbox Code Playgroud)