Сравнить 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);
}
Решение твоей задачи. На других массивах не проверял, возможны ошибки.