有一种简单的方法将NSString拆分为一个字符数组?

有一种简单的方法将NSString拆分为一个字符数组? 如果生成的types是NSString自身的集合,每个只有一个字符,那实际上是最好的。

是的,我知道我可以在一个循环中做到这一点,但我想知道是否有一种更快的方法来处理任何现有的方法或function,你可以用C#中的LINQ。

例如

// I have this... NSString * fooString = @"Hello"; // And want this... NSArray * fooChars; // <-- Contains the NSStrings, @"H", @"e", @"l", @"l" and @"o" 

你可以做这样的事情(如果你想使用枚举器)

 NSString *fooString = @"Hello"; NSMutableArray *characters = [[NSMutableArray alloc] initWithCapacity:[fooString length]]; [fooString enumerateSubstringsInRange:NSMakeRange(0, fooString.length) options:NSStringEnumerationByComposedCharacterSequences usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) { [characters addObject:substring]; }]; 

如果你真的想要一个NSArray最后

 NSArray *fooChars = [NSArray arrayWithArray:characters]; 

一定要关心像表情符号和其他字符的一些字符可能比一个索引跨度更远的范围。

这是NSString的一个类别方法

 @implementation (SplitString) - (NSArray *)splitString { NSUInteger index = 0; NSMutableArray *array = [NSMutableArray arrayWithCapacity:self.length]; while (index < self.length) { NSRange range = [self rangeOfComposedCharacterSequenceAtIndex:index]; NSString *substring = [self substringWithRange:range]; [array addObject:substring]; index = range.location + range.length; } return array; } @end 

将其转换为NSData [data bytes]将在您select[data length]字节的编码中有一个Cstring。