2010-04-02 6 views
0

Je veux stocker chaque caractère d'une valeur de chaîne à chaque endroit d'un tableau de chaînes.C# simple erreur: Stocker des caractères dans un tableau de chaînes

J'ai écrit ce code mais Visual Studio indique que "Impossible de convertir implicitement le type String en String []".

Pouvez-vous me dire comment résoudre ce problème?

string [] array = Console.ReadLine(); 
+1

Qu'est-ce que vous essayez de faire? – SLaks

+0

Vous venez évidemment d'un monde C - essayez de considérer les chaînes comme quelque chose d'unique, pas comme un tableau de caractères. –

Répondre

6

Console.ReadLine ne retourne pas un tableau mais string:

string line = Console.ReadLine(); 

Dans votre code, la array variable est déclarée comme un tableau de chaînes, de sorte que le résultat de Console.ReadLine ne peut pas être attribuée.

+0

Okay. Ma variable de chaîne est-elle automatiquement un tableau? – user300484

+1

Une chaîne peut être vue comme une liste indexée de caractères, et vous pouvez obtenir un caractère réel [] avec la méthode ToCharArray. La question est: pour quoi faire? –

+0

Je veux permuter l'ordre des caractères. – user300484

1

Vous pouvez obtenir un tableau de caractères (char []) avec la méthode ToCharArray() de String. Vous pouvez ensuite utiliser LINQ ou quelque chose pour convertir chaque caractère en une chaîne.

Demande très étrange cependant. Console.ReadLine() renvoie une chaîne.

0

La réponse dépend de votre définition de "caractère". Si vous parlez de points de code (c'est-à-dire char s), plusieurs réponses sont données. Si vous parlez des caractères linguistiques, alors voici une façon de le faire:

 string[] array = GetAllCharacters(Console.ReadLine()).ToArray(); 

En utilisant cette méthode:

using System.Globalization; 
... 
    private static IEnumerable<string> GetAllCharacters(string text) 
    { 
     TextElementEnumerator elementEnumerator = StringInfo.GetTextElementEnumerator(text); 
     while (elementEnumerator.MoveNext()) 
      yield return (string)elementEnumerator.Current; 
    } 
Questions connexes