2010-09-27 29 views

回答

14

这将执行unicode中的前65536个字符,这将适用于大多数情况。我相信unicode可以更高(2^32?),但这需要更长的时间才能登录。

+ (void) logCharacterSet:(NSCharacterSet*)characterSet 
{ 
    unichar unicharBuffer[20]; 
    int index = 0; 

    for (unichar uc = 0; uc < (0xFFFF); uC++) 
    { 
     if ([characterSet characterIsMember:uc]) 
     { 
      unicharBuffer[index] = uc; 

      index ++; 

      if (index == 20) 
      { 
       NSString * characters = [NSString stringWithCharacters:unicharBuffer length:index]; 
       NSLog(@"%@", characters); 

       index = 0; 
      } 
     } 
    } 

    if (index != 0) 
    { 
     NSString * characters = [NSString stringWithCharacters:unicharBuffer length:index]; 
     NSLog(@"%@", characters); 
    } 
} 

有一些很有趣的妆效,例如这里是20个字符从punctuationCharacterSet样本。

་.༉༊་་་.་.་.་་.༒་,()()྅

+0

应标记为我相信答案。 – 2015-03-25 16:48:06

+0

有一个更快的解决方案:http://stackoverflow.com/a/15741737/3050403 – kelin 2015-06-03 06:49:39