Javascript:如何逐字逐句地比较两个句子

时间:2014-05-09 19:23:12

标签: javascript arrays compare sentence

我有点使用自定义选项创建输入教师。

不是专业人士(不要因为错误的人错误的地方而生我的气)但是感谢有用的论坛,例如stackoverflow.com和贡献的流量/人,我能够把它拉出来一两天。

直接现在,在这里!

    while (i < len+1){
      if(boxarray[i] == orgarray[i]){
    ++i;
        actualScore = i - 1;
      }

我已经搜索了,&#39; ==&#39;运算符是没用的,我不会去JSON.encode。我在this page遇到了类似的解决方案。但在我的情况下,我在比较两个句子时循环遍历每个单词。细节是微不足道的,如果有人请帮助我解决上述问题,我不会抱怨同一个项目,承诺。

好的,我可以提供更多代码,如果它可以帮助你帮助我。

    var paratext = document.getElementById('typethis').innerHTML;    
    var orgstr = "start typing, in : BtXr the yellow box but. please don't shit." ;
    var boxtext = document.getElementById('usit').value; 
    var endtrim = boxtext;
    var actualScore;
    var orgarray = listToArray(orgstr," ");
    var boxarray = listToArray(boxtext," ");
    var len = boxarray.length;
    var i = 0;
    var actualScore; //note var undefined that's one mistake I was making [edit]
    if(orgstr.indexOf(boxtext) !== -1){
    while (i < len+1){
      if(boxarray[i] == orgarray[i]){
    ++i;
        actualScore = i - 1;
       }
     }      
    alert(actualScore);
    }

6 个答案:

答案 0 :(得分:1)

如果我按照你的意思追问你:

http://jsfiddle.net/w6R9U/

var s1 = 'The dog sleeps';
var s2 = 'the dog jogs';

var s1Parts= s1.split(' ');
var s2Parts= s2.split(' ');

var score = 0;

for(var i = 0; i<s1Parts.length; i++)
{
     if(s1Parts[i] === s2Parts[i])
         score++;   
}

&#34;狗睡觉&#34;并且&#34;狗睡觉&#34;由于案例导致得分为2(如果需要,可以忽略)。上面的例子得分为1.可以通过使用句子的长度获得百分比。希望这可以帮助!如果没有别的东西可以让你开始。

答案 1 :(得分:1)

以下将比较每个角色,减少&#34; actualScore&#34;对于每个不平等:

http://jsfiddle.net/ckKDR/

var sentence1 = "This is the original sentence.", // original text
    sentence2 = "This is teh originel sentence.", // what the user typed
    length = sentence1.length,
    actualScore = length, // start with full points
    i = 0;

while(i<length){
    if(sentence1[i]!==sentence2[i]){
        actualScore--; // subtract 1 from actual score
    }

    i++; // move to the next index
}

alert("'sentence2' is "+Math.round(100*(actualScore/length))+"% accurate");

答案 2 :(得分:0)

让我们说输入是你的两个句子作为字符串。

然后,首先要做的是创建两个临时字符串,删除所有非单词字符(例如标点字符)。通过单词分隔符将句子拆分为字符串数组。

然后你可以指定一个整数变量来得分。为两个句子创建外循环和内循环。当句子中的单词匹配时,将变量递增1,从第2个句子中删除单词(用非单词字符替换单词)并打破内循环。

另外,请使用此运算符进行单词比较:

===

答案 3 :(得分:0)

你的问题是

if (boxarray[i] = orgarray[i])

single =是赋值运算符。替换为

===

进行比较。

答案 4 :(得分:0)

你没有比较你正在分配

if(boxarray[i] = orgarray[i]){ 
              ^^^

所以每次迭代都会如此。修复拼写错误以实际执行您想要的检查

if(boxarray[i] === orgarray[i]){ 
               ^^^

你如何计算得分看起来是错的。你应该做像

这样的事情
var score = orgstr.length;
while...
    if(boxarray[i] === orgarray[i]){ 
        score--;
    }

答案 5 :(得分:0)

{
string1="string1";
string2="string2 is here";
  changepercent(string1,string2);
}

function changepercent(string1,string2) {

  var s1Parts= string1.split(' ');
  var s2Parts= string2.split(' ');

  var matched = 0;

for(var i = 0; i<s1Parts.length; i++)
{
  for(var j = 0; j<s2Parts.length; j++)
      {
        if(s1Parts[i] === s2Parts[j])
         matched++;   
      }

}
  var percentage=(matched/Math.max(s1Parts.length, s2Parts.length))*100;

  console.log(matched);
  console.log(percentage);
if(percentage<50)
{
  console.log("Change Above 50%");
}

}

稍作修改的第一个代码