Нужен совет по реализации?

Всем привет. Есть компонент на форме 2 компонента richtextbox, в них всталвляю текст. Текст может содержать пробелы.
В будущем, мне надо сравнить 2 этих списка и оставить только тот текст которого нет например в richtextbox1. Как вижу я сравнение этих списков:
-все слова располагаю в столбец, сортирую и сравниваю построчно - если совпали, то удаляю строку и т.д. Но такой способ походу не самый лучший. Как реализовать задуманное??? Не прошу писать код.
  • Вопрос задан
  • 103 просмотра
Решения вопроса 1
hekkaaa
@hekkaaa
C#/.NET Developer
Привет!
Если я все правильно понял то первое что в голову лезет (без подключения сторонних фреймворков) это разбить строку на массив и сравнивать их. Только перебор. Возможно тебя пугает ручная реализация, но под капотом фреймоворков в основном что-то подобное. Разве что алгоритм какой-то прикручен навороченный.

richtextbox = "You win some. You lose some.";
richtextbox1 = "You not win amazing some. You lose down some.";

string[] textsubs = richtextbox.Split(' ');
string[] textsubs1 = richtextbox1.Split(' ');

foreach (var sub in textsubs )
{
   foreach (var sub1 in textsubs ){
// делаем цикл сравнивания и удаления из массива.
var res = String.Equals( sub, sub1)
.....
 }
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@oleg_ods
1) Разбить текст на слова с помощью Split, как описали выше.
2) Поместить результаты в HashSet
3) Исключить из одного множества другое. Метод ExeptWith.
Ответ написан
Комментировать
@mkvmaks Автор вопроса
Нашел вот такое решение:
double[] numbers1 = { 2.0, 2.0, 2.1, 2.2, 2.3, 2.3, 2.4, 2.5 };
double[] numbers2 = { 2.2 };

IEnumerable<double> onlyInFirstSet = numbers1.Except(numbers2);

foreach (double number in onlyInFirstSet)
    Console.WriteLine(number);

/*
 This code produces the following output:

 2
 2.1
 2.3
 2.4
 2.5
*/


Сделал на свой лад:
private void button1_Click(object sender, EventArgs e)
        {
            list1.Add(textBox1.Text);
            list2.Add(textBox2.Text);
        }

        private void button2_Click(object sender, EventArgs e)
        {
            richTextBox3.Clear();

            IEnumerable list3 = list1.Except(list2);

            foreach (string c in list3)
            {
                richTextBox3.Text = c;
            }
        }


Но такой код в моей реализации не работает ((( Почему??? Правда у меня тип string,а не double
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы