標籤:
OC中字串的反轉方式可以用兩種方式來處理:
第一種:從頭到尾取出字串的每一個字元,然後將其從尾到頭添加到可變的字串中,最後輸出即可。
第二種:將OC內部的字串轉換為C語言中的字串,然後動態分配一個數組,然後將字串內容拷貝到數組中,進行首尾交換操作。共進行數組長度/2次操作。
方式一:OC版本
1 -(NSMutableString*)Reverse 2 { 3 NSUInteger length = [self length]; 4 NSMutableArray *array = [NSMutableArray arrayWithCapacity:length]; 5 6 for(long i=length-1; i>=0; i--) 7 { 8 unichar c = [self characterAtIndex:i]; 9 [array addObject:[NSString stringWithFormat:@"%c",c]];10 }11 12 13 NSMutableString *str = [NSMutableString stringWithCapacity:length];14 for(int i=0; i<=length-1; i++)15 {16 [str appendString:array[i]];17 }18 return str;19 }@end
方式二:C語言版本
1 @implementation NSString (Reverse) 2 -(NSMutableString*)Reverse 3 { 4 const char *str = [self UTF8String]; 5 NSUInteger length = [self length]; 6 char *pReverse = (char*)malloc(length+1);//動態分配空間 7 strcpy(pReverse, str); 8 for(int i=0; i<length/2; i++) 9 {10 char c = pReverse[i];11 pReverse[i] = pReverse[length-i-1];12 pReverse[length-i-1] = c;13 }14 NSMutableString *pstr = [NSMutableString stringWithUTF8String:pReverse];15 free(pReverse);16 return pstr;17 }18 @end
主函數測試:
1 // main.m 2 // 字串的反轉 3 // 4 // Created by ma c on 15/8/18. 5 // Copyright (c) 2015年 bjsxt. All rights reserved. 6 // 7 8 #import <Foundation/Foundation.h> 9 #import "NSString+Reverse.h"10 int main(int argc, const char * argv[])11 {12 @autoreleasepool13 {14 NSMutableString *string = [NSMutableString stringWithFormat:@"XYQ-CHINA"];15 NSString *str = [NSString stringWithString:[string Reverse]];16 NSLog(@"%@",str);17 }18 return 0;19 }
測試結果如下:
2015-08-18 19:42:56.696 字串的反轉[2222:136571] ANIHC-QYXProgram ended with exit code: 0
Objective-C:字串的反轉Reverse