Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 比较两个RichTextBox中的文本并获得差异_Vb.net_Loops_Compare_Richtextbox - Fatal编程技术网

Vb.net 比较两个RichTextBox中的文本并获得差异

Vb.net 比较两个RichTextBox中的文本并获得差异,vb.net,loops,compare,richtextbox,Vb.net,Loops,Compare,Richtextbox,我想比较两个richtextbox之间的文本,并得到第三个文本的差异。不突出显示文本。 到目前为止,最好的选择是 第一个解决方案可以工作,但它不会从richtextbox1中删除richtextbox2中的文本。 Ended,用户问道 如果他们是一样的,什么也不做 我的情况完全相反,但我仍然找不到解决办法 谢谢首先,您需要在表单中添加一个名为(combobox1)的组合框 然后在其中添加以下项目: RichTextbox1-RichTextbox2 RichTextbox2-RichTextbo

我想比较两个richtextbox之间的文本,并得到第三个文本的差异。不突出显示文本。 到目前为止,最好的选择是

第一个解决方案可以工作,但它不会从richtextbox1中删除richtextbox2中的文本。 Ended,用户问道

如果他们是一样的,什么也不做

我的情况完全相反,但我仍然找不到解决办法


谢谢

首先,您需要在表单中添加一个名为(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

如果您觉得这很有用,请将其标记为“答案”

您好,谢谢。不幸的是,通过比较两行文本,您的代码可以完美地工作。我正在寻找替换rtb2中rtb1中的单词的方法,不管它们的位置如何。如果在rtb1的开头包含“X”,但在rtb2的结尾包含“X”,那么我希望它考虑到它并消除它。我想消除从rtb1到rtb2的所有令人兴奋的事情。希望这是清楚的。你认为这有可能吗?我不确定我是否很了解你,例如,我接受了你上面的评论并进行了快速尝试,首先我将其复制到2个RichTextBox并按下按钮(无结果),然后我仅从第二个框中删除了(如果“X”是)后面的(包含)一词(结果是删除的单词contain),然后,我再次添加了“包含”一词,但在第2框的段落末尾(结果再次为零),代码完全符合您的想法,如果您仍需要修改,请给我一个您想要处理的文本示例,我将为您编辑代码。您好@GME,谢谢您的回答。我将尝试更具体地让图像说话。p、 另外,C5与A4不在同一行,因此应在下面的行中。
Dim intsA = RichTextBox1.Text.Split(" ")
Dim intsB = RichTextBox2.Text.Split(" ")
Dim myresult = intsA.Except(intsB).ToArray()
RichTextBox3.Text = String.Join(" ", myresult)