Il s'agit davantage de savoir si cela est possible.

J'ai une zone de saisie, 6 éléments entrent dans la zone de saisie, ceci est un exemple de chaîne qui forme le tableau:

Lundi, mardi, avril, février, demain, 42

Ces mots peuvent changer, mais leur ordre est important. Ils sont séparés par une tabulation.

Je veux les 1er, 3ème et 6ème mots de ce tableau. Je voudrais les placer dans un objet - et si possible, mais d'autres éléments provenant d'autres sources dans cet objet dans un ordre particulier - afin que je puisse ensuite me référer à cet objet afin de ne pas avoir à écrire longtemps sections de code à chaque fois que j'ai besoin de sortir ces 3 éléments.

Mon code actuel est peu maniable et je recherche une meilleure solution.

Pour référence mon code actuel:

string phrase = value.Text;
string[] words = phrase.Split('\t');

string Word1 = words[1];
string Word2 = words[3];
string Word3 = words[6];

this.Output.Text = Word1 + '\t';
this.Output.Text += TextBox1.Text + '\t';
this.Output.Text += Word2 + '\t';
this.Output.Text += TextBox2.Text + '\t';
this.Output.Text += Word3;

Ce code fonctionne, mais je commence à travailler avec des tableaux plus grands, nécessitant des sorties plus grandes et je constate que je dois me référer plusieurs fois à la même sortie.

Imaginez le code ci-dessus s'exécutant sur Word12, à partir d'un tableau de 30 ajoutant les informations de 6 zones de texte et devant avoir cette sortie créée 15 fois à différents endroits dans le programme. En outre, vous pouvez voir que la longueur du code n'a plus de sens.

Si je pouvais créer un objet contenant toutes ces informations, je pourrais le créer une fois, puis y revenir aussi souvent que nécessaire.

Toute idée ou direction sur la façon de procéder a été reçue avec gratitude.

0
Dravinian HS Hearthstone 26 août 2020 à 05:25

2 réponses

Meilleure réponse

Sur la base de ma compréhension, vous recherchez la solution ci-dessous. Si j'ai manqué quelque chose, faites-le moi savoir.

  1. Tout d'abord, vous pouvez stocker value.Text dans une liste de chaînes en divisant par '\ t'.
  2. Créez un tableau pour stocker les index pour lesquels vous souhaitez sélectionner des mots.
  3. Sur la base des index stockés, vous pouvez choisir des mots et les stocker dans une liste de mots finale.
  4. Créez un tableau pour stocker le texte des zones de texte dynamiques.
  5. Bouclez sur ces tableaux de texte stockés et insérez-les à une autre position dans la liste de mots finale.
  6. Enfin, rejoignez la liste de mots séparée par '\ t' et affichez-la en sortie.

Voici le code:

string finalOutput = string.Empty;
        List<string> wordsList = new List<string>();
        string phrase = value.Text;// "Monday\tTuesday\tApril\tFebruary\tTomorrow\t42";
        string[] words = phrase.Split('\t');
        List<int> wordsIndexes = new List<int> { 1, 3, 6 }; //this is based on ur requirment
        List<string> textBoxesText = new List<string>() { TextBox1.Text, TextBox2.Text };
        wordsIndexes.ForEach(i => wordsList.Add(words[i-1]));

        int insertAtIndex = 1;
        for (int i = 0; i < textBoxesText.Count; i++)
        {
            if (wordsList.Count >= insertAtIndex)
            {
                wordsList.Insert(insertAtIndex, textBoxesText[i]);
                insertAtIndex += 2;
            }
        }

        finalOutput = string.Join('\t', wordsList);
0
Vikas Garg 26 août 2020 à 05:09

Je ne sais pas si je comprends bien, mais je pense que vous pouvez utiliser une liste et y ajouter les mots, en utilisant une liste d'index comme ceci:

string phrase = value.Text;
string[] words = phrase.Split('\t');
List<int> indexes = new List<int> { 1, 3, 6 }; //you can add more indexes here...
List<string> wordsList = new List<string>();
indexes.Foreach(i => wordsList.add(words[i]));

Avec cette implémentation, vous avez tous les mots dont vous avez besoin dans la liste et vous pouvez facilement en ajouter d'autres simplement en ajoutant ou en supprimant l'index de votre choix. Et vous pouvez consulter la liste chaque fois que vous en avez besoin.

0
Ronny Cordova 26 août 2020 à 03:37