2012-10-19 66 views
0
NSMutableString *str [email protected]"abcdefg123"; 

我想隨機將每個字符添加到像這個@「f1ad2g3be2」這樣的新字符串中。如何隨機對一個NSString進行排序

+2

你應該澄清你的問題。如果你想亂打字符串中的字符,就自己動手吧。你卡在什麼地方? – keyser

+0

他想洗牌給定字符串中的所有字符。 – Thomas

+0

下次更清楚地問問題。 –

回答

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的是什麼ü想

3

這很簡單。首先,你必須把角色分解成一個數組來處理。然後你交換字母X很多次,我選擇這樣做,所以每個字符將被交換

NSString *str [email protected]"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); 
相關問題