2014-09-24 56 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