Suppose I have a String
- "Hello"
How can I split the String
into an Array
which holds each character
like this - ["H", "e", "l", "l", "o"]
Thanks.
Asked
Active
Viewed 5,148 times
0

Krish Wadhwana
- 1,544
- 2
- 12
- 24
-
This is actually an **_exact_** duplicate of the question luk2302 mentioned. Even the example string is the same – Arc676 Oct 17 '15 at 14:10
-
But the wordings of the title is more perfect. May be thats why 15+ people marked as useful. – Vin May 18 '22 at 08:03
2 Answers
16
The characters in a string is put under the characters
collection. Just iterate over them and convert them to String
:
Swift 4
let str = "Hello"
let arr = str.map { String($0) }
print(arr)
Swift 3
let str = "Hello"
let arr = str.characters.map { String($0) }
print(arr)

Code Different
- 90,614
- 16
- 144
- 163
-
2
-
2@Arc676 the difference is that your code yields a Character Array while his answer yields a String Array – luk2302 Oct 17 '15 at 14:12
-
`Array(str.characters)` creates an array of `Character`. Harder to work with down the road – Code Different Oct 17 '15 at 14:12
-
1Just to clarify for those reading this: The expression `str.characters` gives an array of `Character` structs. The code `str.characters.map { String($0) }` creates an array of characters and then maps that array back to an array of single-charater `String` objects. – Duncan C Oct 17 '15 at 14:19
-4
I think you'll have to do it somewhat manually.
NSString *str = @"Hello";
NSMutableArray *chars = [NSMutableArray new];
for (NSUInteger i = 0; i < [str length]; i++) {
unichar c = [str characterAtIndex:i];
[chars addObject:[NSString stringWithCharacters:&c length:1]];
}

l00phole
- 622
- 3
- 8
-
-
-
The OP is asking for a solution in Swift, where handling of characters from a string is different, slightly more complicated, and has changed slightly in Swift 2. I'm not that familiar with Swift 2 yet, so I'm going to let somebody who IS up on Swift 2 answer this. – Duncan C Oct 17 '15 at 14:06
-
This is for Obj-C. The question uses Swift 2 (which gives you the array of characters with `str.characters`) – Arc676 Oct 17 '15 at 14:06
-
I still don't follow you. I missed the language thing and assumed Objective-C, but I don't know a better way in Objective-C, do you? – l00phole Oct 17 '15 at 14:08
-
@luk2302 I'll take your silence as "No, I don't know a better way, so iterating manually is the only way in Objective-C". – l00phole Oct 17 '15 at 14:23
-
1Posting a answer in the wrong language and then claiming that your statements are actually true in that (wrong) language is just ... I don't know ... just still very much wrong. If I post a CJam answer and say that you can do that with only one letter - then that is true BUT achieves nothing. So while you might be correct in Objective-C that does just simply not matter. – luk2302 Oct 17 '15 at 14:26
-
@luk2302 Yes, I've acknowledged my answer as being for the wrong language. It's the "wrong statement" part of your comment I am asking about and you have yet to demonstrate it as incorrect (again, for Objective-C). – l00phole Oct 17 '15 at 14:27
-
It isn't incorrect for Objective-C but it is incorrect for the question asked since Objective-C is irrelevant here. – curiously77 Aug 25 '20 at 19:31