[SOLVED] Convert Swift string to array


How can I convert a String "Hello" to an Array ["H","e","l","l","o"] in Swift?

In Objective-C I have used this:

NSMutableArray *characters = [[NSMutableArray alloc] initWithCapacity:[myString length]];
for (int i=0; i < [myString length]; i++) {
    NSString *ichar  = [NSString stringWithFormat:@"%c", [myString characterAtIndex:i]];
    [characters addObject:ichar];


It is even easier in Swift:

let string : String = "Hello 🐶🐮 🇩🇪"
let characters = Array(string)
// [H, e, l, l, o,  , 🐶, 🐮,  , 🇩🇪]

This uses the facts that

  • an Array can be created from a SequenceType, and
  • String conforms to the SequenceType protocol, and its sequence generator
    enumerates the characters.

And since Swift strings have full support for Unicode, this works even with characters
outside of the “Basic Multilingual Plane” (such as 🐶) and with extended grapheme
clusters (such as 🇩🇪, which is actually composed of two Unicode scalars).

Update: As of Swift 2, String does no longer conform to
SequenceType, but the characters property provides a sequence of the
Unicode characters:

let string = "Hello 🐶🐮 🇩🇪"
let characters = Array(string.characters)

This works in Swift 3 as well.

Update: As of Swift 4, String is (again) a collection of its

let string = "Hello 🐶🐮 🇩🇪"
let characters = Array(string)
// ["H", "e", "l", "l", "o", " ", "🐶", "🐮", " ", "🇩🇪"]

Answered By – Martin R

Answer Checked By – Mary Flores (BugsFixing Volunteer)

Leave a Reply

Your email address will not be published. Required fields are marked *