Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在iOS中反转字符串_Ios - Fatal编程技术网

在iOS中反转字符串

在iOS中反转字符串,ios,Ios,我正在写一段代码,它应该反转一个字符串。当我运行以下代码时,它会抛出一个错误: - (NSString*) reversingName:(NSString *)myNameText { NSString *result; int len = [myNameText length]; NSMutableString *reverseName = [[NSMutableString alloc] initWithCapacity:len]; for(int i=len;i&g

我正在写一段代码,它应该反转一个字符串。当我运行以下代码时,它会抛出一个错误:

- (NSString*) reversingName:(NSString *)myNameText
{
   NSString *result;
   int len = [myNameText length];
   NSMutableString *reverseName = [[NSMutableString alloc] initWithCapacity:len];
   for(int i=len;i>0;i--)
   {
     [reverseName appendFormat:[NSString stringWithFormat:@"%c",[myNameText characterAtIndex:i]]];
   }
   result = reverseName;
   return result;
}

环线的
应如下所示:

for(int i=len-1;i>=0;i--)
所以你的方法应该是

- (NSString*) reversingName:(NSString *)myNameText
{
    int len = [myNameText length];
    NSMutableString *reverseName = [[NSMutableString alloc] initWithCapacity:len];
    for(int i=len-1;i>=0;i--)
    {
        [reverseName appendString:[NSString stringWithFormat:@"%c",[myNameText characterAtIndex:i]]];
    }
    return [reverseName autorelease];
}
请尝试以下示例代码:

NSString *name = @"abcdefghi" ;
    int len = [name length];
    NSMutableString *reverseName = [[NSMutableString alloc] initWithCapacity:len];

    for(int i=len-1;i>=0;i--)
    {
        [reverseName appendFormat:[NSString stringWithFormat:@"%c",[name characterAtIndex:i]]];

    }

    NSLog(@"%@",reverseName);

我想如果有人感兴趣的话,我会推出另一个版本。。就我个人而言,我喜欢使用NSMutableString的更干净的方法,但如果性能是最高优先级,则此方法会更快:

- (NSString *)reverseString:(NSString *)input {
    NSUInteger len = [input length];
    unichar *buffer = malloc(len * sizeof(unichar));
    if (buffer == nil) return nil; // error!
    [input getCharacters:buffer];

    // reverse string; only need to loop through first half
    for (NSUInteger stPos=0, endPos=len-1; stPos < len/2; stPos++, endPos--) {
        unichar temp = buffer[stPos];
        buffer[stPos] = buffer[endPos];
        buffer[endPos] = temp;
    }

    return [[NSString alloc] initWithCharactersNoCopy:buffer length:len freeWhenDone:YES];
}

(注意:我还没有足够的声望点数来投票或评论答案,所以如果有人能为我投票,我将不胜感激。我已经阅读了很长时间,但现在想开始贡献更多!)

在Swift 2.0中反转字符串:

let string = "This is a test string."
let characters = string.characters
let reversedCharacters = characters.reverse()
let reversedString = String(reversedCharacters)
String("This is a test string.".characters.reverse())
String(Array("This is a test string.").reverse())
捷径:

let string = "This is a test string."
let characters = string.characters
let reversedCharacters = characters.reverse()
let reversedString = String(reversedCharacters)
String("This is a test string.".characters.reverse())
String(Array("This is a test string.").reverse())

捷径:

let string = "This is a test string."
let characters = string.characters
let reversedCharacters = characters.reverse()
let reversedString = String(reversedCharacters)
String("This is a test string.".characters.reverse())
String(Array("This is a test string.").reverse())

[reverseName appendFormat:@“%c”,[name characterAtIndex:i]]
已经足够了。您甚至可以使用XOR操作来提高速度(而不是每次分配一个临时变量)