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' });
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;