2012-11-08 146 views
-1

我已经想出了如何比较两个文本框,并计算每个单词中有多少单词相同,以及有多少单词是不同的,但我想知道,而不是显示具体是多少,以及如何我可以计算它们之间的差异百分比吗?计算唯一性的百分比

对于那些谁我糊涂了,如果我在这个职位又写了这整个消息,并改变了几句话,也许去掉了一些我能得到从程序告诉我差反馈为14%左右...

+0

也相同的情况下? –

+0

当你说你有多少单词是相同的,你考虑到,他们位于两个给定的字符串内的位置? –

回答

2

你可以得到的话:

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; 
+1

'sameWordPercentage =(COUNT1/words1.Length)* 100;'将给出0(整数除法) –

+0

@EVERYONE所以什么方式是正确的方式?我认为双百分比=(UniqueWordCount/TotalWordCount)* 100; ? – ace007

+0

@ ace007:你见过我的回答吗?其中一个值必须是double,结果也是double,因此我使用了'1.0 * count1 ...'(1.0 * count1将int转换为double)。 –

1

既然你说你已经拥有的独特单词量,不需要对如何让他们解释:

double UniqueWordCount = 71; 
double TotalWordCount = 231; 

double Percentile = (UniqueWordCount/TotalWordCount)*100; 

答:30.7359 ....%

如果你想详谈

Math.Round(Percentile,2) 

答:30.74%,通过使用string.Split

+2

因为您正在进行整数除法,所以结果不为0。 –

+0

已更新的答案。 –

+0

它没有更新。结果仍然是0。 – Gorpik