Es más una cuestión de si esto es posible.

Tengo un cuadro de entrada, 6 elementos van al cuadro de entrada, esta es una cadena de ejemplo que forma la matriz:

Lunes, martes, abril, febrero, mañana, 42

Estas palabras pueden cambiar, pero su orden es importante. Están separados por una pestaña.

Quiero la primera, tercera y sexta palabra de esta matriz. Me gustaría colocarlos en un objeto, y si es posible, pero otros elementos de otras fuentes en ese objeto en un orden particular, para luego poder referirme a ese objeto para no tener que escribir mucho secciones de código cada vez que necesito generar estos 3 elementos.

Mi código actual es difícil de manejar y estoy buscando una mejor solución.

Para referencia mi código actual:

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;

Este código funciona, pero estoy empezando a trabajar con matrices más grandes, que requieren salidas más grandes y descubro que necesito volver a consultar la misma salida varias veces.

Imagine el código anterior ejecutándose en Word12, desde una matriz de 30 agregando la información de 6 cuadros de texto, y teniendo que crear esa salida 15 veces en diferentes lugares del programa. Además, puede ver que la longitud del código deja de tener sentido.

Si pudiera crear un objeto que contenga toda esa información, podría crearlo una vez y luego consultarlo con la frecuencia que necesite.

Cualquier idea o dirección sobre cómo proceder se recibió con gratitud.

0
Dravinian HS Hearthstone 26 ago. 2020 a las 05:25

2 respuestas

La mejor respuesta

Según tengo entendido, está buscando la siguiente solución. Si me perdí algo, hágamelo saber.

  1. En primer lugar, puede almacenar value.Text en una lista de cadenas dividiendo por '\ t'.
  2. Cree una matriz para almacenar índices para los que desea elegir palabras.
  3. Según los índices almacenados, puede elegir palabras y almacenarlas en una lista de palabras final.
  4. Cree una matriz para almacenar texto de cuadros de texto dinámicos.
  5. Haga un bucle en la matriz de texto de estos cuadros de texto almacenados e insértelo en una posición alternativa en la lista de palabras final.
  6. Por último, únase a la lista de palabras separada por '\ t' y muestre como salida.

A continuación se muestra el código:

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 ago. 2020 a las 05:09

No estoy seguro de si lo entiendo correctamente, pero creo que podría usar una lista y agregar las palabras allí, usando una lista de índices como esta:

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]));

Con esta implementación, tiene todas las palabras que necesita en la lista y puede agregar más fácilmente simplemente agregando o eliminando cualquier índice que desee. Y puede consultar la lista siempre que lo necesite.

0
Ronny Cordova 26 ago. 2020 a las 03:37