web-dev-qa-db-fra.com

Comment convertir un seul caractère en chaîne?

J'aimerais énumérer un string et au lieu de le renvoyer chars, j'aimerais que la variable itérative soit de type string. Ce n'est probablement pas possible que le type itératif soit une string alors quel est le moyen le plus efficace d'itérer à travers cette chaîne?

Dois-je créer un nouvel objet string à chaque itération de la boucle ou puis-je effectuer un casting en quelque sorte?

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
}
36
Ian R. O'Brien

Utilisez la méthode .ToString ()

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

Vous avez deux options. Créez un objet string ou appelez la méthode ToString.

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

Il semble que la chose évidente à faire est la suivante:

String cString = c.ToString()
4
Ian R. O'Brien

Avec interpolation C # 6:

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

Cela rase quelques octets. :)

4
sean

Créez une nouvelle chaîne à partir du caractère.

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

ou

 String cString = c.ToString();
1
Michael G

Créer une méthode d'extension:

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

et boucle à travers les chaînes:

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

n'est probablement pas possible d'avoir le type itératif soit une chaîne

Bien sûr que ça l'est:

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

Chacune des suggestions des autres réponses peut remplacer c.ToString(). Le plus efficace par un petit cheveu est probablement c => new string(c, 1), ce que char.ToString() fait probablement sous le capot.

0
Jim Balter

Pourquoi pas ce code? Ce ne sera pas plus rapide?

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