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

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

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