15

Is there any way to convert a string ("abcdef") to an array of string containing its character (["a","b","c","d","e","f"]) without using the String.Split function?

5 Answers 5

36

So you want an array of string, one char each:

string s = "abcdef";
string[] a = s.Select(c => c.ToString()).ToArray();

This works because string implements IEnumerable<char>. So Select(c => c.ToString()) projects each char in the string to a string representing that char and ToArray enumerates the projection and converts the result to an array of string.

If you're using an older version of C#:

string s = "abcdef";
string[] a = new string[s.Length];
for(int i = 0; i < s.Length; i++) {
    a[i] = s[i].ToString();
}
Sign up to request clarification or add additional context in comments.

2 Comments

Actually, although both of your examples will give you the same string array in the end, the second ("older") way is considerably faster. LINQ has to do a fair amount of overhead translation before breaking the code down to what is, essentially, the second set of code. Try a timing test; the LINQ takes more than twice as long as the "longhand" example.
I suspect that there is something wrong with your method of timing.
9

Yes.

"abcdef".ToCharArray();

2 Comments

He said string array, not char array. Note that if you could String.Split on the empty char between each char in the string the result would be a string[]. This seems to be the behavior he is seeking.
My bad. I took liberties trying to interpret the improper grammar of his question, but my interpretation was clearly wrong. Thanks for pointing it out.
3

You could use linq and do:

string value = "abcdef";
string[] letters = value.Select(c => c.ToString()).ToArray();

This would get you an array of strings instead of an array of chars.

Comments

3

Why don't you just

string value="abcd";

value.ToCharArray();

textbox1.Text=Convert.toString(value[0]);

to show the first letter of the string; that would be 'a' in this case.

Comments

0

Bit more bulk than those above but i don't see any simple one liner for this.

List<string> results = new List<string>; 

foreach(Char c in "abcdef".ToCharArray())
{
   results.add(c.ToString());
}


results.ToArray();  <-- done

What's wrong with string.split???

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.