web-dev-qa-db-fra.com

Fractionner la chaîne en un tableau de chaînes de caractères simples

Je veux quelque chose d'aussi simple que de transformer "this is a test" en 

new string[] {"t","h","i","s"," ","i","s"," ","a"," ","t","e","s","t"}

Devrais-je vraiment faire quelque chose comme

test = "this is a test".Select(x => x.ToString()).ToArray();

edit: Pour clarifier, je ne veux pas de tableau de caractères, idéalement, je veux un tableau de chaînes. Je ne vois vraiment rien qui cloche dans le code ci-dessus, mis à part le fait que je penserais qu'il existe un moyen plus simple.

41
mowwwalker

Je crois que c'est ce que vous cherchez:

char[] characters = "this is a test".ToCharArray();
94
Brandon Moretz

Les chaînes en C # ont déjà un indexeur de caractères

string test = "this is a test";
Console.WriteLine(test[0]);

Et...

if(test[0] == 't')
  Console.WriteLine("The first letter is 't'");

Cela fonctionne aussi ...

Console.WriteLine("this is a test"[0]);

Et ça...

foreach (char c in "this is a test")
  Console.WriteLine(c);

MODIFIER:

J'ai remarqué que la question avait été mise à jour en ce qui concerne les tableaux de caractères. Si vous devez avoir un tableau string [], voici comment diviser une chaîne à chaque caractère en c #:

string[] test = Regex.Split("this is a test", string.Empty);

foreach (string s in test)
{
  Console.WriteLine(s);
}
31
Chris Gessler

Simple!!
une ligne:

 var res = test.Select(x => new string(x, 1)).ToArray();
4
cheziHoyzer

Vous pouvez simplement utiliser String.ToCharArray () puis traiter chaque caractère comme une chaîne de caractères dans votre code.

Voici un exemple:

    foreach (char c in s.ToCharArray())
        Debug.Log("one character ... " +c);
3
David

Essaye ça:

var charArray = "this is a test".ToCharArray().Select(c=>c.ToString());
2
David Peden

Vous recherchez probablement la méthode ToCharArray () . Cependant, vous devrez faire un peu plus de travail si un string[] est requis, comme vous l'avez noté dans votre message.

    string str = "this is a test.";
    char[] charArray = str.ToCharArray();
    string[] strArray = str.Select(x => x.ToString()).ToArray();

Edit: Si vous êtes inquiet à propos de la concision de la conversion, je vous suggère d’en faire une méthode d’extension.

public static class StringExtensions
{
    public static string[] ToStringArray(this string s)
    {
        if (string.IsNullOrEmpty(s))
            return null;

        return s.Select(x => x.ToString()).ToArray();
    }
} 
1
ahawker

Convertissez le message en tableau de caractères, puis utilisez une boucle for pour le changer en chaîne

string message = "This Is A Test";
string[] result = new string[message.Length];
char[] temp = new char[message.Length];

temp = message.ToCharArray();

for (int i = 0; i < message.Length - 1; i++)
{
     result[i] = Convert.ToString(temp[i]);
}
0
William
string input = "this is a test";
string[] afterSplit = input.Split();

foreach (var Word in afterSplit)
    Console.WriteLine(Word);

Résultat:

this
is
a
test
0
Last2Night