Сравнение текста в двух Richtextboxes и получение различий - PullRequest
1 голос
/ 18 июня 2020

Я хочу сравнить текст между двумя richtextboxes и получить различия в третьем. Без выделения текста. Пока что лучшим вариантом является это решение

Первое решение работает, но не удаляет текст, присутствующий в richtextbox2, из richtextbox1. В конце концов, пользователь спросил

, совпадают ли они, ничего не делать.

В моем случае все наоборот, и я все еще не могу найти решение.

Спасибо

1 Ответ

1 голос
/ 19 июня 2020

Сначала вам нужно добавить в форму поле со списком с именем (combobox1), а затем добавить в него следующие элементы:

RichTextbox1 - RichTextbox2

RichTextbox2 - RichTextbox1

второй , добавьте кнопку с именем (button1), под этим событием нажатия кнопки вставьте этот код:

RichTextBox3.Clear()
If RichTextBox1.Text <> "" And RichTextBox2.Text <> "" And RichTextBox1.Text <> RichTextBox2.Text And ComboBox1.SelectedItem = "RichTextbox1 - RichTextbox2" Then
    Dim txt1(RichTextBox1.Text.Split(" ").Length) As String
    Dim txt2(RichTextBox2.Text.Split(" ").Length) As String
    txt1 = RichTextBox1.Text.Split(" ")
    txt2 = RichTextBox2.Text.Split(" ")
    Dim diff1 As String = ""
    For Each diff As String In txt1
        If Array.IndexOf(txt2, diff.ToString) = -1 Then
            diff1 += diff.ToString & " "
        End If
    Next
    RichTextBox3.Text = diff1.ToString
End If

If RichTextBox1.Text <> "" And RichTextBox2.Text <> "" And RichTextBox1.Text <> RichTextBox2.Text And ComboBox1.SelectedItem = "RichTextbox2 - RichTextbox1" Then
    Dim txt1(RichTextBox1.Text.Split(" ").Length) As String
    Dim txt2(RichTextBox2.Text.Split(" ").Length) As String
    txt1 = RichTextBox1.Text.Split(" ")
    txt2 = RichTextBox2.Text.Split(" ")
    Dim diff2 As String = ""
    For Each diff As String In txt2
        If Array.IndexOf(txt1, diff.ToString) = -1 Then
            diff2 += diff.ToString & " "
        End If
    Next
    RichTextBox3.Text = diff2.ToString
End If

Теперь у вас есть 2 варианта: если вы выберете (RichTextbox1 - RichTextbox2) из ​​поля со списком, затем нажмите кнопку, richtextbox3 будет отображать текст, который находится в richtextbox1 и не найден в richtextbox2, тогда как если вы выберете (RichTextbox2 - RichTextbox1), произойдет обратное

наконец, если 2 richtextboxes одинаковы, ничего не произойдет

  • Также вы можете использовать String.Join *

В событии нажатия кнопки Button1 замените этот код на предыдущий:

Dim intsA = RichTextBox1.Text.Split(" ")
Dim intsB = RichTextBox2.Text.Split(" ")
Dim myresult = intsA.Except(intsB).ToArray()
RichTextBox3.Text = String.Join(" ", myresult)

, если вы нашли это полезно, отметьте как ответ

...