Comparing words in two richtextbox to find difference?

怎甘沉沦 提交于 2020-06-23 04:37:22

问题


I have three RichTextBoxes. I want to compare all the words of RichTextbox1 with Richtextbox2 one by one with space or comma as the delimiter.

If they are same do nothing, if not highlight the text to some color and save it in RichTextBox3.

I am having some trouble with the loop.


回答1:


Explanation

First we will declare some variables to shorten our writing work. We'll then use the For Each command.

Here we will take two rounds to scan the differences, first of Richtextbox1 which is not in Richtextbox2 and vice versa. The different characters will keep adding to the variable diff1 and diff 2 and at the end we will compile both of them in RichTextbox3.

It will work on the diff algorithm.

Code And Example

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 = "" 'Differences between 1 and 2
Dim diff2 As String = "" 'Differences between 2 and 1
For Each diff As String In txt1
   If Array.IndexOf(txt2, diff.ToString) = -1 Then
        diff1 += diff.ToString & " "
   End If
Next
For Each diff As String In txt2
   If Array.IndexOf(txt1, diff.ToString) = -1 Then
        diff2 += diff.ToString & " "
   End If
Next
    RichTextbox3.Text = diff1 & diff2
End Sub

Hope it would work perfectly!




回答2:


can someone please help me with coloring the text ?? – Vineet Kamath Mar 1 at 17:30

If you want to color or highlight your text you just need (1) to find and select the word/string and (2) to set text properties.

Try to modify Error404's code in this way:

Dim diffPosition as integer ' Set where beging to find and select in RichTextBox
diffPosition = 1 ' Initialize

For Each diff As String In txt1
   If Array.IndexOf(txt2, diff.ToString) = -1 Then
        diff1 += diff.ToString & " "
        With RichTextBox1
             .Find(diff, diffPosition, RichTextBoxFinds.None) ' Find and select diff in RichTextBox1 starting from position diffPosition in RichtextBox1
             .SelectionFont = New Font(.Font, FontStyle.Bold) ' Set diff in Bold
             .SelectionColor = Color.Blue ' Set diff in blue instead of black
             .SelectionBackColor = Color.Yellow ' highlight in yellow
        End With
   End If
   diffPosition = diffPosition + Len(diff) ' re-Initialize diffPostion to avoid to find and select the same text present more than once
Next

diffPosition = 1 ' re-Initialize for RichTextBox2

For Each diff As String In txt2
   If Array.IndexOf(txt1, diff.ToString) = -1 Then
        diff2 += diff.ToString & " "
        With RichTextBox2
             .Find(diff, diffPosition, RichTextBoxFinds.None) ' Find and select diff in RichTextBox2 starting from position diffPosition in RichtextBox2
             .SelectionFont = New Font(.Font, FontStyle.Bold) ' Set diff in Bold
             .SelectionColor = Color.Blue ' Set diff in blue instead of black
             .SelectionBackColor = Color.Yellow ' highlight in yellow
        End With
   End If
   diffPosition = diffPosition + Len(diff) ' re-Initialize diffPostion to avoid to find and select the same text present more than once
Next
    RichTextbox3.Text = diff1 & diff2

The code shall find and select "diff", set Bold style, set color of each letter in blue (instead of black) and highlight in yellow.



来源:https://stackoverflow.com/questions/22113098/comparing-words-in-two-richtextbox-to-find-difference

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!