Сравнить 2 массива строк и записать результат в третий

Есть 2 массива:

string [] firstArray = new string [] {"helloworld", "hey", "hithere", "bye"};

string [] secondArray = new string [] {"hello", "ok", "hi", "stop", "there", "world"};

Задача : в 3-й массив записать все слова из 1-го, но если во 2-м встречается два слова, которые составляют слово первого массива, то разбить слово первого массива на два и в третий записать 2 этих слова(если же слово не встречается, просто передать слово из 1 го в в 3 й).

Пример результата:

string [] result = new string[] {"hello", "world", "hey", "hi", "there", "bye"};

Так, как во втором есть "hello" и "world" которые составляют слово "helloworld" из первого массива, то слово "helloworld" разбивается запятыми на эти 2 составляющих слова и идут в 3 й массив.

Пока получилось только такое.. но не работает.

        List<string> result = new List<string>();

        foreach (var item in firstArray)
        {
            for (int i = 0; i < secondArray.Length; i++)
            {
                if (item.Contains(secondArray[i]))
                {
                    for (int j = 0; j < item.Length; j++)
                    {
                        item.Split(' ');
                    }
                }
            }
            result.Add(item);
        }

Ответы (1 шт):

Автор решения: Богдан Шарков
static void Method()
{
    string[] firstArray = new string[] { "helloworld", "hey", "hithere", "bye" };

    string[] secondArray = new string[] { "hello", "ok", "hi", "stop", "there", "world" };


    bool flag = false;
    string w1 = "";
    string w2 = "";
    List<string> list = new List<string>();
    foreach (var m1 in firstArray)
    {
        string m1_1 = m1;
        foreach (var m2 in secondArray)
        {
            if (m1_1.Contains(m2))
            {
                if (!flag)
                {
                    w1 = m2;
                    m1_1 = m1_1.Replace(m2, "");
                    flag = true;
                }
                else
                {
                    w2 = m1_1;
                }
            }
        }
        if (!flag && !secondArray.Contains(m1)) list.Add(m1);
        if (flag && w1 != "" && w2 != "") list.AddRange(new string[] { w1, w2 });
        flag = false;
        w1 = "";
        w2 = "";
    }
    foreach (var w in list) Console.WriteLine(w);
}

Решение твоей задачи. На других массивах не проверял, возможны ошибки.

→ Ссылка