比较两个文本框中的单词以找出差异?

Comparing words in two textbox to find difference?

我有 2 个文本框。

我想比较 Textbox1 和 Textbox2 的所有单词

假设文本框 1 中的第二个单词是 "me" 而文本框 2 中的第二个单词是 "him" 它将突出显示文本框 2 中的单词 "him" 和 "me"在 Textbox1 上。

示例:

方框 1 = 我是 男孩

方框 2 = 我是 女孩

盒子 1 = 是一个 男孩

box 2 =是一个女孩

但现在我在比较单词时遇到了问题。我尝试按数组索引进行比较,但它只会显示在 Textbox1 中找不到的单词!

    Dim txt1(TextBox1.Text.Split(" ").Length) As String
    Dim txt2(TextBox2.Text.Split(" ").Length) As String
    txt1 = TextBox1.Text.Split(" ")
    txt2 = TextBox2.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

我也遇到了无法突出显示文本的问题

使用 Linq Except 扩展:

Dim diffs = txt1.Except(txt2)

输出:

  • diffs(0) = "he"
  • diffs(1) = "boy"

并且您可以在 txt1 和 txt2 之间交换:

Dim diffs = txt2.Except(txt1)

输出:

  • diffs(0) = "she"
  • diffs(1) = "girl"

也可以用这种方式

    Dim txt1(TextBox1.Text.Split(" ").Length) As String
    Dim txt2(TextBox2.Text.Split(" ").Length) As String
    txt1 = TextBox1.Text.Split(" ")
    txt2 = TextBox2.Text.Split(" ")
    Dim diff1 As String = "" 'Differences between 1 and 2
    Dim diff2 As String = "" 'Differences between 2 and 1

    For i = 0 To txt2.Length - 1
        If txt2(i) <> txt1(i) Then
            diff1 += txt1(i).ToString & "  "

        End If

    Next i

    For x = 0 To txt1.Length - 1
        If txt1(x) <> txt2(x) Then
            diff2 += txt2(x).ToString & "  "
        End If

    Next x