0
NSMutableString *str =@"abcdefg123";

この@"f1ad2g3be2"のような新しい文字列にすべての文字をランダムにしたい。

4

2 に答える 2

3
NSMutableString *str1 = [[NSMutableString alloc]initWithString:str];
NSMutableString *str2 = [[NSMutableString alloc] init];
while ([str1 length] > 0) {
    int i = arc4random() % [str1 length];
    NSRange range = NSMakeRange(i,1);
    NSString *sub = [str1 substringWithRange:range];
    [str2 appendString:sub];
    [str1 replaceOccurrencesOfString:sub withString:@"" options:nil range:range];
}

[str1 release];

str2はあなたが欲しいものです

于 2012-10-19T11:24:27.327 に答える
3

とてもシンプルです。まず、操作する文字を配列に分割する必要があります。次に、文字 X を何度も交換します。私はこれを選択して、すべての文字が交換されるようにします

NSString *str =@"abcdefg123";
int length = str.length;
NSMutableArray *letters = [[NSMutableArray alloc] init];
for (int i = 0; i< length; i++) {
    NSString *letter = [NSString stringWithFormat:@"%c", [str characterAtIndex:i]];
    [letters addObject:letter];
}

for (int i = 0; i<length; i++) {
    int value = arc4random() % (length-1);
    NSLog(@"Value is : %i", value);
    [letters exchangeObjectAtIndex:i withObjectAtIndex:value];
}

NSString *results = [letters componentsJoinedByString:@""];
NSLog(@"The string before : %@", str);
NSLog(@"This is the string now : %@", results);
于 2012-10-19T11:38:37.627 に答える