2014-09-24 59 views
2

我有以下NSCharacterSet,並且希望生成一個對該字符集有效的隨機字符串。從NSCharacterSet生成一個隨機字符串

NSMutableCharacterSet *characterSet = [NSMutableCharacterSet alphanumericCharacterSet]; 

[characterSet formUnionWithCharacterSet:[NSCharacterSet whitespaceCharacterSet]]; 

[NSCharacterSet characterSetWithCharactersInString:]從字符串中產生字符集。我想要一個相反的方法。像[NSString stringWithCharacterSet:]

+0

那麼,你幾乎必須生成一個隨機的'unichar'值並測試它是該集合中的成員。你可以通過首先對haveMemberInPlane進行「人口普查」來加快速度,以找出可能的範圍。 – 2014-09-24 12:35:11

+0

你必須做的不只是說「給我代碼」。 – 2014-09-24 15:47:17

回答

3

我不認爲NSCharacterSet是存儲有效字符列表的最佳方式,因爲它不提供方便的方法來獲取其長度或訪問特定索引處的字符。使用NSString代替:

+ (NSString *)randomStringFromCharacters:(NSString *)chars 
           ofLength:(NSUInteger)length 
{ 
    unichar str[length]; 
    for (NSUInteger i = 0; i < length; i++) 
     str[i] = [chars characterAtIndex:arc4random() % [chars length]]; 

    return [NSString stringWithCharacters:str length:length]; 

} 
+0

如果一個*有*以字符集開頭,則可以旋轉集合一次以構建有效字符列表,然後從該列表中選擇。 – 2014-09-24 15:48:56