计算唯一性的百分比

时间:2012-11-08 12:11:36

标签: c# .net

我已经想出如何比较2个文本框并计算每个文本框中有多少单词是相同的,有多少是不同的但是我想知道而不是确切地显示有多少是相同的,有多少是不同的我可以计算它们之间的差异百分比?

对于那些我感到困惑的人,如果我在这篇帖子下再次写下这整条信息并改变了一些单词并且可能删除了一些,我可以从程序中获得反馈,告诉我差异是14%左右......

2 个答案:

答案 0 :(得分:2)

您可以使用string.Split

来获取字词
String[] words1 = Textbox1.Text.Split();
String[] words2 = Textbox2.Text.Split();

您可以使用Linq比较两者:

var sameWordsInBoth = words1.Intersect(words2);
int count1 = sameWordsInBoth.Count();
var inTxt1ButNotInTxt2 = words1.Except(words2);
int count2 = inTxt1ButNotInTxt2.Count();
var inTxt2ButNotInTxt1 = words2.Except(words1);
int count3 = inTxt2ButNotInTxt1.Count();

要获得百分比,您只需计算总词数(f.e。words1.Length)并将其与其他计数进行比较。

例如:

double sameWordPercentage = (1.0 * count1 / words1.Length) * 100;

答案 1 :(得分:1)

既然你说你已经拥有了大量独特的单词,并且不需要解释如何获得它们:

double UniqueWordCount = 71;
double TotalWordCount = 231;

double Percentile = (UniqueWordCount/TotalWordCount)*100;

答案:30.7359 ....%

如果你想围绕它

Math.Round(Percentile,2)

答案:30.74%