Сравните две строки в js и найдите разницу - PullRequest
0 голосов
/ 02 июля 2018

как сравнить две строки чисто, и дать конкретный результат, такой как выделение дополнительного слова, неправильное слово и пропуск слова во 2-й строке. например,

var x = "This is the first original string in javascript language." </br>
var y = "This is not the first org string in language."

diff =  wrong word ="org"<br>
        Extra word ="not"<br>
        skip word ="javascript"

// здесь фрагмент моего кода, но в некоторых случаях моя программа завершается с ошибкой

  var x = "here is some value of string";
  var y = "here is the some val string";
  var k=0; 
  var SkipWrd="";
 for(var i=0; i<y.length;i++){ 
    var sktmp="";
    var swtmp=0;
     for(var j=0; j<=2;j++) { 
         if(x[k]!="undefined"){ 
             if(y[i]==x[k+j]){  

                 SkipWrd+=sktmp;
                 skip+=swtmp;
                 H_wrd +=  typ_wrd[i]+" ";
                 org_para+= sktmp+x[k+j]+" ";

                 k+=j+1;
                 break;
             }
            else{
             sktmp+= "<mark>"+ x[k+j]+" "+ "</mark>";
             swtmp++; 
             if(j==2 && y[i]!=x[k+j]){
                 err++;
                 Err_Wrd+=y[i]+" ";
                 H_wrd += "<span id='H-Err'>" + typ_wrd[i] + "</span> ";
                 org_para+="<span id='O-Err'>" +x[k]+" "+ "</span> ";

                 k++;
             }
            }
        } 
     }
 }

1 Ответ

0 голосов
/ 02 июля 2018

Я использовал подход сравнения по словам, а не по буквам. Общая логика похожа. Приведенный ниже код будет работать для вашего примера, но есть еще много случаев, которые могут пойти не так.

var x = "This is the first original string in javascript language.";
var y = "This is not the first org string in language.";

x=x.split(' ');
y=y.split(' ');

var i=0,j=0;
while (1) {
  if (!x[i] || !y[j]) break;
  
  if (x[i] == y[j]) {
    i++;
    j++;
    continue;
  }
  
  if (x[i] == y[j+1]) {
    console.log('Extra word : ', y[j]);
    i++;
    j+=2;
    continue;
  }
  
  if (x[i+1] == y[j]) {
    console.log('Skip word: ', x[i]);
    i+=2;
    j++;
    continue;
  }
  
  if (x[i+1] == y[j+1]) {
    console.log('Wrong word: ', y[j]);
    i++;
    j++;
    continue;
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...