比较两个RichTextBox [英] Compairing two RichTextBox

查看:85
本文介绍了比较两个RichTextBox的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两个richTextBox,一个包含单词列表和其他整个文本。我想比较两个文本框,如果在whole_Text文本框中找到list_of_word文本框中的单词,则将该单词复制到第3个文本框。



任何帮助将不胜感激!在此先感谢朋友们。 :)

解决方案

试试这个:(假设您要在名为'richTextBox3'的第三个RichTextBox中显示差异:

 私有  char  [] splitChars =  new   char  [] 
{
' ' // space
' ,' // 逗号
' ;' // 分号
' : ' // 冒号
' \t' // 标签
' \ n' // newline
' \ r' // return
' - ' / / 连字符
' ! ' // 感叹号
' /' // 斜杠
' \\' // 反斜杠
};

private void FindDifference_Click()
{
string [] words1 = richTextBox1.Text.ToLower()。Split(splitChars,StringSplitOptions.RemoveEmptyEntries);

string [] words2 = richTextBox2.Text.ToLower()。Split(splitChars,StringSplitOptions.RemoveEmptyEntries);

var difference = words1.Except(words2);

richTextBox3.Clear();

if (difference.Count()== 0
{
richTextBox3.Text = 没有区别。;
return ;
}

StringBuilder sb = new StringBuilder();

foreach var wrd 区别)
{
sb.Append(wrd);
sb.AppendLine();
}

richTextBox3.Text = sb.ToString();
}

对于生产代码,我想使用已编译的RegEx而不是String.Split。


Linq可用于帮助比较字符串。

  //  测试数据设置(www.lipsum .com) 
字符串 [] ListOfWords = { Duis urna enim rhoncus sit amet dignissim ut <跨度class =code-string> sollicitudin at};
字符串 WholeText = Lorem ipsum dolor sit阿梅德,consectetur adipiscing ELIT。mauris lacinia前euismod lectus convallis lobortis整型简历faucibus lectus等molestie enim。Fusce condimentum SAPIEN等蚤iaculis volutpat。在等得力士。Fusce ID拉克丝的Pretium南德维尔mauris ID velit consectetur枕,vehicula enim一,condimentum乌仁娜。南ID ERAT EST。UT欧盟risus ultricies,dapibus LEO QUIS,sollicitudin velit。Phasellus QUIS法无ligula。南rhoncus LEO简历麦格纳aliquet vulputate。Lorem存有悲坐阿梅德,consectetur adipiscing ELIT。前庭faucibus赌注暂准,一iaculis存有consectetur QUIS。Pellentesque居住者morbi tristique senectus等netus等malesuada脂肪酸甲酯交流turpis egestas。UT坐阿梅特lobortis性爱。Nullam在lectus坐阿梅特NIBH congue tempor。Donec lobortis dapibus预期值,也,在dapibus tortor vulputate坐阿梅特。;

// 使用匹配填充FindWord
// 注意:将WholeText拆分为单词时不考虑逗号,fullstops等
var FindWord =( from word in ListOfWords
其中 WholeText.Split(' ')。包含(word)
// 其中Array.Exists(WholeText.Split(''), s => {return(s.Equals(word))?true:false;})
选择
) ;

//
var FindWord = WholeText.Split(' ')。相交(ListOfWords) ;

// 获取结果
foreach var s in FindWord){
Console。的WriteLine(S);
}



Enumerable.Intersect< tsource>方法: http://msdn.microsoft.com/en-us /library/vstudio/bb460136(v=vs.100).aspx [ ^ ]


这应该可以帮到你 - http://msdn.microsoft.com/en-us/library/ms754041%28v=vs.110%29.aspx [ ^ ]。

i have two richTextBoxes, one containing list of words and other whole text. i want to compare both textboxes and if word from list_of_word textbox found in whole_Text text box than copy that word to 3rd textbox.

Any help would be appreciated! thanks in advance friends. :)

解决方案

Try this: (assume you want to show the difference in a third RichTextBox named 'richTextBox3):

private char[] splitChars = new char[] 
{   
    ' ',    // space
    ',',    // comma
    ';',    // semi-colon
    ':',    // colon
    '\t',   // tab
    '\n',   // newline
    '\r',   // return
    '-',    // hyphen
    '!',    // exclamation 
    '/',    // slash
    '\\'    // backslash
};

private void FindDifference_Click()
{
    string[] words1 = richTextBox1.Text.ToLower().Split(splitChars, StringSplitOptions.RemoveEmptyEntries);

    string[] words2 = richTextBox2.Text.ToLower().Split(splitChars, StringSplitOptions.RemoveEmptyEntries);

    var difference = words1.Except(words2);

    richTextBox3.Clear();

    if (difference.Count() == 0)
    {
        richTextBox3.Text = "No difference.";
        return;
    }

    StringBuilder sb = new StringBuilder();

    foreach(var wrd in difference)
    {
       sb.Append(wrd);
       sb.AppendLine();
    }

    richTextBox3.Text = sb.ToString();
}

For production code I would want to use a compiled RegEx rather than String.Split.


Linq can be used to help in comparing the strings.

//test data setup (www.lipsum.com)
String[] ListOfWords = {"Duis","urna","enim","rhoncus","sit","amet","dignissim","ut","sollicitudin","at"};
String WholeText = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris lacinia ex euismod lectus convallis lobortis. Integer vitae faucibus lectus, et molestie enim. Fusce condimentum sapien et felis iaculis volutpat. Nam vel mauris id velit consectetur pulvinar at et tellus. Fusce id lacus pretium, vehicula enim a, condimentum urna. Nam id erat est. Ut eu risus ultricies, dapibus leo quis, sollicitudin velit. Phasellus quis nulla ligula. Nam rhoncus leo vitae magna aliquet vulputate. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum faucibus ante nisi, a iaculis ipsum consectetur quis. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Ut sit amet lobortis eros. Nullam at lectus sit amet nibh congue tempor. Donec lobortis dapibus neque, at dapibus tortor vulputate sit amet.";

//populate FindWord with match
//note: comma, fullstops and the like are not taken into account when splitting WholeText into words
var FindWord = (from word in ListOfWords
	where WholeText.Split(' ').Contains(word)
//	where Array.Exists(WholeText.Split(' '), s => {return (s.Equals(word))?true:false;})
	select word
);

//OR
var FindWord = WholeText.Split(' ').Intersect(ListOfWords);

//get results
foreach (var s in FindWord){
	Console.WriteLine(s);
}


Enumerable.Intersect<tsource> Method: http://msdn.microsoft.com/en-us/library/vstudio/bb460136(v=vs.100).aspx[^]


This should help you - http://msdn.microsoft.com/en-us/library/ms754041%28v=vs.110%29.aspx[^].


这篇关于比较两个RichTextBox的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆