Рекурсивно объединить каждую строку из двух текстовых полей - PullRequest
0 голосов
/ 14 февраля 2020

У меня есть два текстовых поля, которые читаются из текстового файла. Я хочу попытаться рекурсивно объединить их так, чтобы каждое значение из текстовое поле 1 связывалось со КАЖДЫМ значением в текстовое поле 2 , разделенных разделителем, как в примере ниже :

Текстовое поле 1

user1

user2

user3

user4

user5

Текстовое поле 2

id1

id2

id3

Я хочу, чтобы вывод был как это:

user1,id1

user1,id2

user1,id3

user2,id1

user2,id2

user2,id3

и так далее ...

Есть идеи, как это сделать? Это для личной программы, которую я создаю для себя, чтобы облегчить мою жизнь для моего бизнеса. У меня нет большого опыта программирования, и это немного сложно для меня.

Я уже знаю, как сохранить вывод в другой файл и заполнить текстовые поля 1 и 2 значениями из текстового файла. Я просто борюсь с этой последней частью.

Мой код для заполнения двух текстовых полей

// Read files and fill lists
private void listOneBtn_Click(object sender, EventArgs e)
{
    if(openFile.ShowDialog() == DialogResult.OK)
    {                
        string read = File.ReadAllText(openFile.FileName);
        list1 = read;
        listOneBox.Text = list1;
    }
}

private void listTwoBtn_Click(object sender, EventArgs e)
{
    if (openFile.ShowDialog() == DialogResult.OK)
    {               
        string read = File.ReadAllText(openFile.FileName);                
        list2 = read;
        listTwoBox.Text = list2;
    }
}

Редактировать: Вот как выглядит моя программа:

screenshot

Ответы [ 2 ]

0 голосов
/ 14 февраля 2020

Попробуйте это:

    string textbox1 = @"user1
user2
user3
user4
user5";

    string textbox2 = @"id1
id2
id3";

    string[] Split(string text) =>
        text.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);

    string[] result
        = Split(textbox1).SelectMany(x => Split(textbox2), (x, y) => $"{x},{y}").ToArray();

Это дает мне:

user1,id1 
user1,id2 
user1,id3 
user2,id1 
user2,id2 
user2,id3 
user3,id1 
user3,id2 
user3,id3 
user4,id1 
user4,id2 
user4,id3 
user5,id1 
user5,id2 
user5,id3 
0 голосов
/ 14 февраля 2020
        static void rec1(string[] strBox1, string[] strBox2, int i)
        {
            if (i < strBox1.Length)
            {
                rec2(strBox1[i], strBox2, 0);
                rec1(strBox1, strBox2, i+=1);
            }
        }
        static void rec2(string str, string[] strBox2, int j)
        {


            if (j < strBox2.Length)
            {
                Console.WriteLine(str.Trim() + "," + strBox2[j].Trim());
                rec2(str, strBox2, j +=1);
            }

        }

        static void Main(string[] args)
        {
            var txtBox1 = listOneBox.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries); //Returns a string array that contains the substrings in this instance that are delimited by ENTER '\n'
            var txtBox2 = listTwoBox.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);

            rec1(txtBox1, txtBox2, 0);

        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...