How Do I Convert a Single Char to a String?

I'd like to enumerate a string and instead of it returning chars I'd like to have the iterative variable be of type string. This probably isn't possible to have the iterative type be a string so what is the most efficient way to iterate through this string?

Do I need to create a new string object with each iteration of the loop or can I perform a cast somehow?

String myString = "Hello, World";
foreach (Char c in myString)
{
    // what I want to do in here is get a string representation of c
    // but I can't cast expression of type 'char' to type 'string'
    String cString = (String)c; // this will not compile
}

11 Answers

Use the .ToString() Method

String myString = "Hello, World";
foreach (Char c in myString)
{
    String cString = c.ToString(); 
}
15

You have two options. Create a string object or call ToString method.

String cString = c.ToString();
String cString2 = new String(c, 1); // second parameter indicates
                                    // how many times it should be repeated

With C# 6 interpolation:

char ch = 'A';
string s = $"{ch}";

This shaves a few bytes. :)

It seems that the obvious thing to do is this:

String cString = c.ToString()
0

Create a new string from the char.

 String cString = new String(new char[] { c });

or

 String cString = c.ToString();

Create an extension method:

public static IEnumerable<string> GetCharsAsStrings(this string value)
{
    return value.Select(c =>
           {
                //not good at all, but also a working variant
                //return string.Concat(c);

                return c.ToString();
           });
}

and loop through strings:

string s = "123456";
foreach (string c in s.GetCharsAsStrings())
{
    //...
}
0
String cString = c.ToString();

Did you try:

String s = new String(new char[] { 'c' });

1

Why not this code? Won't it be faster?

string myString = "Hello, World";
foreach( char c in myString )
{
    string cString = new string( c, 1 );
}

probably isn't possible to have the iterative type be a string

Sure it is:

foreach (string str in myString.Select(c => c.ToString())
{
...
}

Any of the suggestions in the other answers can be substituted for c.ToString(). Probably the most efficient by a small hair is c => new string(c, 1), which is what char.ToString() probably does under the hood.

you can use + with empty string "", please check the below code:

char a = 'A';
//a_str is a string, the value of which is "A".
string a_str = ""+a;

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Sarah Jenkins

Sarah Jenkins

Senior Technology Editor & AI Specialist

Sarah Jenkins is a veteran tech journalist with over 12 years of experience covering artificial intelligence, mobile innovations, and digital ethics. Her insights have appeared in leading technology publications worldwide.

Share this article
Twitter Facebook Pinterest