有没有现成的方法可以改变现有NSString或NSMutableString字符的顺序?我已经有一种解决方法,但如果有现成的方法就更好了。
例如,给定字符串“HORSE”,是否有一种方法可以返回“ORSEH”、“SORHE”、“ROHES”等字符串?
有没有现成的方法可以改变现有NSString或NSMutableString字符的顺序?我已经有一种解决方法,但如果有现成的方法就更好了。
例如,给定字符串“HORSE”,是否有一种方法可以返回“ORSEH”、“SORHE”、“ROHES”等字符串?
@interface NSString (Scrambling)
+ (NSString *)scrambleString:(NSString *)toScramble;
@end
.m文件:
@implementation NSString (Scrambling)
+ (NSString *)scrambleString:(NSString *)toScramble {
for (int i = 0; i < [toScramble length] * 15; i ++) {
int pos = arc4random() % [toScramble length];
int pos2 = arc4random() % ([toScramble length] - 1);
char ch = [toScramble characterAtIndex:pos];
NSString *before = [toScramble substringToIndex:pos];
NSString *after = [toScramble substringFromIndex:pos + 1];
NSString *temp = [before stringByAppendingString:after];
before = [temp substringToIndex:pos2];
after = [temp substringFromIndex:pos2];
toScramble = [before stringByAppendingFormat:@"%c%@", ch, after];
}
return toScramble;
}
@end
虽然代码不是最美观的,但它能够完成工作。可能有一种(const char *)的方法可以做到这一点,但对我来说,这个方法已经足够好了。在我的Mac上进行快速测试显示执行时间为0.001021秒。
用法:
NSString *scrambled = [NSString scrambleString:otherString];
代码改编自另一种语言/伪代码