Рассмотрим этот код:
.h Файл:
@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 *) способ сделать это, но это прекрасно работает для меня.Быстрый тест показывает 0,001021 секунды для выполнения на моем Mac.
Использование:
NSString *scrambled = [NSString scrambleString:otherString];
Код адаптирован из другого языка / псевдокода