Search code examples
objective-cnsstringnsarray

Is there a simple way to split a NSString into an array of characters?


Is there a simple way to split a NSString into an array of characters? It would actually be best if the resulting type were a collection of NSString's themselves, just one character each.

Yes, I know I can do this in a loop, but I'm wondering if there is a faster way to do this with any existing methods or functions the way you can with LINQ in C#.

e.g.

// I have this...
 NSString * fooString = @"Hello";

// And want this...
NSArray * fooChars; // <-- Contains the NSStrings, @"H", @"e", @"l", @"l" and @"o"

Solution

  • You could do something like this (if you want to use enumerators)

    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];
    }];
    

    And if you really wanted it in an NSArray finally

    NSArray *fooChars = [NSArray arrayWithArray:characters];