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); } } } }
6 Réponses :
La classe chaîne code>
implémente ienumerable
et donc à Concentrez-vous sur les lettres em> d'une chaîne, vous pouvez simplement attraper un ienumerator
et processus le char code> S à la fois. Une façon de le faire consiste à utiliser un
foreach Code>
: char[] letters = "robot".ToCharArray();
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 i> voulez, vous pouvez déplacer la boucle dans une fonction distincte et avoir la construction et renvoyer un char [] code> 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 () code> - 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 code> dans un tableau Vous pouvez simplement utiliser
string.tocharray code> comme dans
Char [] lettres = "robot" .tocharray (); < / code>.
Voulez-vous dire quelque chose comme ça?
Toute façon de goûter le mot?
Pourquoi pas cela?
for (int i = 0; i < charArray.Length; i++) { Console.WriteLine(charArray[i]); }
Vous essayez de faire trop.
Essayez ceci: p> edit: strong> p> La chaîne dans le tableau de caractères, sans boucle, vous pouvez le faire: word.tocharray () code> p> p> p> p>
Vous pouvez utiliser la méthode TOARRAY () pour renvoyer le tableau de caractères.
string word = "robot"; char[] array = word.ToArray();
Notez que toarray code> est une méthode d'extension à
chaîne code>, et vous devez ajouter
à l'aide de system.linq; code> dans votre fichier.
Mais pourquoi voudriez-vous? String Implements IEnumerable
semble que tout le monde veut convertir une chaîne en une gamme de caractères.
Que diriez-vous de p> 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();
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 code> code> un objet ou un tableau de caractères?
Il voulait diviser une ficelle en une gamme de caractères, la partie clé i> 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 ++.
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 code> avec
lettre code>. 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.