Convert Swift string to array Convert Swift string to array ios ios

Convert Swift string to array


It is even easier in Swift:

let string : String = "Hello 🐶🐮 🇩🇪"let characters = Array(string)println(characters)// [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 generatorenumerates the characters.

And since Swift strings have full support for Unicode, this works even with charactersoutside of the "Basic Multilingual Plane" (such as 🐶) and with extended graphemeclusters (such as 🇩🇪, which is actually composed of two Unicode scalars).


Update: As of Swift 2, String does no longer conform toSequenceType, but the characters property provides a sequence of theUnicode characters:

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

This works in Swift 3 as well.


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

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


Edit (Swift 4)

In Swift 4, you don't have to use characters to use map(). Just do map() on String.

let letters = "ABC".map { String($0) }print(letters) // ["A", "B", "C"]print(type(of: letters)) // Array<String>

Or if you'd prefer shorter: "ABC".map(String.init) (2-bytes 😀)

Edit (Swift 2 & Swift 3)

In Swift 2 and Swift 3, You can use map() function to characters property.

let letters = "ABC".characters.map { String($0) }print(letters) // ["A", "B", "C"]

Original (Swift 1.x)

Accepted answer doesn't seem to be the best, because sequence-converted String is not a String sequence, but Character:

$ swiftWelcome to Swift!  Type :help for assistance.  1> Array("ABC")$R0: [Character] = 3 values {  [0] = "A"  [1] = "B"  [2] = "C"}

This below works for me:

let str = "ABC"let arr = map(str) { s -> String in String(s) }

Reference for a global function map() is here: http://swifter.natecook.com/func/map/


There is also this useful function on String: components(separatedBy: String)

let string = "1;2;3"let array = string.components(separatedBy: ";")print(array) // returns ["1", "2", "3"]

Works well to deal with strings separated by a character like ";" or even "\n"