7
votes

Comment puis-je diviser les lettres d'un mot en une matrice en C #?

Comment puis-je diviser une chaîne en un éventail de caractères en C #?

Exemple de texte de chaîne utilisée est "robot". p>

Le programme doit imprimer: P>

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.IO;
using System.Text.RegularExpressions;


namespace Testing
{
class Program
{
    static void Main(string[] args)
    {
        String word = "robot";

        String[] token = word.Split(); // Something should be placed into the () to 
        //print letter by letter??

        foreach (String r in token)
        {
            Console.WriteLine(r);
        }
    }
}
}


16 commentaires

Votre utilisation du mot «alphabet» où la plupart écriraient «lettre» est potentiellement très déroutante.


Je pense que votre question est plus logique si vous remplacez alphabet avec lettre . Est-ce le mot que vous vouliez?


Que voulez-vous dire, 'imprimer alphabet par alphabet'?


Que voulez-vous dire par 'Tokenize'? On vous a demandé à plusieurs reprises et n'a pas encore fourni de commentaires. Jusqu'à ce que vous le fassiez, vous allez probablement continuer à obtenir les mêmes solutions. Aidez-nous à vous aider!


@RMX Oui Ses lettres / alphabets.


@ Michael non ce n'est pas. Je viens d'explorer d'autres moyens de faire la méthode.


@Dark par jobenization Je me demandais s'il y a une méthode pour utiliser la classe "Split" pour séparer chaque lettre du mot.


@Javanoob "codes" est quelque peu inexacte, c'est la source "code".


Dunno ce qui est si difficile à propos de ces gars. Dans le monde Java, vous aviez l'habitude de scinder les chaînes à l'aide de StringTokenzer: download.oracle.com/javase/1.4.2/docs/api/java/util/... . Même dans sa première itération, il était évident que l'OP demandait ...


@Kev la chose est, dans le monde C # (et dans le monde C et C ++), il est beaucoup plus facile de diviser une ficelle à l'écart. Pas besoin d'utiliser une classe spéciale pour cela.


@george - Oui, je sais ... En fait, même dans Java World, ils ont String.Split, mais il utilise la regex à la place. Mais je viens de souligner que OP utilise une terminologie valide et qu'il n'est pas utilisé mal sous votre tweet.


@KEV Voir "Alphabet" Vice "Lettre". C'était la cause de la confusion.


@george - Même si le code était une mort morte..et OP ressemble à un orateur non anglais, donc éventuellement "Alphabet" -> "lettre" a été perdue en traduction. Et la tokenise est un terme assez juste pour scinder une chaîne.


Dupliqué possible de C # a un jeton de chaîne comme Java?


@Ve n'est pas vraiment, l'exemple qu'il donne est un mot unique; ATTENDU QUE l'autre question pose des mots dans une phrase.


@À tous ceux qui ont un problème avec le mot alphabet: la question a été posée dans des alphabets en premier lieu en raison de la signification d'autres caractères plutôt que de simplement l'anglais, vérifiez-la "lettre (alphabet), élément écrit d'un alphabet qui représente un seul phonème ". Si vous vous demandez également qui utiliserait le mot alphabets, veuillez consulter le dictionnaire britannique.


6 Réponses :


11
votes

La classe chaîne code> implémente ienumerable code> et donc à Concentrez-vous sur les lettres em> d'une chaîne, vous pouvez simplement attraper un ienumerator code> et processus le char code> S à la fois. Une façon de le faire consiste à utiliser un foreach Code> :

char[] letters = "robot".ToCharArray();


8 commentaires

Toute façon de goûter le mot?


@Javanoob: Qu'est-ce que cela signifie pour vous?


@Jason Si possible, je ne veux pas utiliser une boucle pour séparer le mot. Et j'ai besoin de chaque alphabet dans un tableau.


@Javanoob Ok, d'abord, c'est des lettres / personnages. Pas alphabets. Cela n'a pas vraiment de sens, et c'est déroutant, alors utilisez le mot approprié. Deuxièmement, vous devez utiliser une boucle. La fonction Split () est implémentée à l'aide d'une boucle, de sorte que vous sachiez ou non une boucle est survenue dans votre code. Si vous vraiment voulez, vous pouvez déplacer la boucle dans une fonction distincte et avoir la construction et renvoyer un char [] de sorte que vous n'avez pas à le voir dans votre principal , mais c'est à peu près tout ce que vous pouvez faire.


@spaparttan: Vous pouvez utiliser word.tocharray () - voir ma réponse ci-dessous.


@RMX WOW, je semble avoir un cas de lundi aurait vraiment dû me rappeler que cela existe. Échouer.


Haha ne t'inquiète pas, j'ai fait exactement la même chose dans ma réponse puis l'a modifiée.


@Javanoob: pour obtenir le char dans un tableau Vous pouvez simplement utiliser string.tocharray comme dans Char [] lettres = "robot" .tocharray (); < / code>.



1
votes

Voulez-vous dire quelque chose comme ça? XXX


1 commentaires

Toute façon de goûter le mot?



16
votes

Pourquoi pas cela?

for (int i = 0; i < charArray.Length; i++)
{
    Console.WriteLine(charArray[i]);
}


0 commentaires

1
votes

Vous essayez de faire trop.

Essayez ceci: xxx

edit:

La chaîne dans le tableau de caractères, sans boucle, vous pouvez le faire: word.tocharray ()


0 commentaires

1
votes

Vous pouvez utiliser la méthode TOARRAY () pour renvoyer le tableau de caractères.

string word = "robot";
char[] array = word.ToArray();


2 commentaires

Notez que toarray est une méthode d'extension à chaîne , et vous devez ajouter à l'aide de system.linq; dans votre fichier.


Mais pourquoi voudriez-vous? String Implements IEnumerable et à des fins pour la plupart des fins d'intention de la plupart des fins, comme un tableau de caractères de caractère tel quel (en particulier avec Linq).



1
votes

semble que tout le monde veut convertir une chaîne en une gamme de caractères.

Que diriez-vous de p> xxx pré>

maintenant, vous avez la vitesse d'un tableau de caractères sans la mémoire supplémentaire de Faire une copie. P>

Edit: une chaîne est une gamme de caractères en interne, il n'ya tout simplement pas de moyen de modifier leurs valeurs car la chaîne est immuable. Mais vous pouvez lire à partir de ce tableau de caractères. String = Tableau de caractères en lecture seule. P>

Je ne peux penser à aucune raison de convertir une chaîne en char [] sauf si vous vouliez "éditer" la chaîne. P>

long lTicks;
            char[] tmpChar = { 'a', 'b', 'c', 'd', 'e' };
            String tmpString = "abcde";
            char chRead;

            lTicks = DateTime.Now.Ticks;
            for (int i = 0; i < 100000000; i++)
                chRead = tmpChar[i%5];

            Console.WriteLine(((DateTime.Now.Ticks - lTicks) / 10000).ToString());

            lTicks = DateTime.Now.Ticks;
            for (int i = 0; i < 100000000; i++)
                chRead = tmpChar[i % 5];

            Console.WriteLine(((DateTime.Now.Ticks - lTicks) / 10000).ToString());

            lTicks = DateTime.Now.Ticks;
            for (int i = 0; i < 100000000; i++)
                chRead = tmpString[i%5];

            Console.WriteLine(((DateTime.Now.Ticks - lTicks) / 10000).ToString());

            lTicks = DateTime.Now.Ticks;
            for (int i = 0; i < 100000000; i++)
                chRead = tmpString[i % 5];

            Console.WriteLine(((DateTime.Now.Ticks - lTicks) / 10000).ToString());

            Console.ReadLine();


4 commentaires

Tout le monde fait ça parce que c'est ce qu'il veut. Si nous écrivons simplement les caractères à la console, je me suis adressé à cela dans ma réponse ci-dessous.


Donc, une chaîne un objet ou un tableau de caractères?


Il voulait diviser une ficelle en une gamme de caractères, la partie clé de sorte que hey peut émettre les caractères individuels. On dirait qu'il ne savait pas que vous ne pouviez pas traiter une chaîne comme une gamme de caractères, j'ai supposé que sa question était de savoir comprendre qu'il ne connaît pas ses options.


Une chaîne est un objet qui stocke une gamme de caractères, mais donne toutes les méthodes pour modifier le contenu de ces caractères. Vous pouvez lire, mais pas mettre à jour en tant que char []. Vous pouvez facilement faire votre propre classe de cordes et je devais le faire avec C / C ++.