我已经想出了如何比较 2 个文本框并计算每个文本框中有多少个单词是相同的,有多少个是不同的,但我想知道我可以计算百分比而不是确切地显示有多少是相同的,有多少是不同的他们之间的区别?
对于那些让我感到困惑的人,如果我在这篇文章下再次写了整条消息并更改了一些单词并可能删除了一些单词,我可以从程序中得到反馈,告诉我差异是 14% 左右......
您可以使用以下方法获取单词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();
要获得百分比,您只需计算总字数(fe words1.Length
)并将其与其他计数进行比较。
例如:
double sameWordPercentage = (1.0 * count1 / words1.Length) * 100;
既然您说您已经拥有大量独特的单词,并且不需要解释如何获取它们:
double UniqueWordCount = 71;
double TotalWordCount = 231;
double Percentile = (UniqueWordCount/TotalWordCount)*100;
答案:30.7359.... %
如果你想圆它
Math.Round(Percentile,2)
答案:30.74 %