Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 比较js中的两个字符串并找出差异_Javascript_Arrays_String - Fatal编程技术网

Javascript 比较js中的两个字符串并找出差异

Javascript 比较js中的两个字符串并找出差异,javascript,arrays,string,Javascript,Arrays,String,如何纯粹比较两个字符串,并提供特定结果,例如突出显示第二个字符串中的额外单词、错误单词和跳过单词。例如 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"

如何纯粹比较两个字符串,并提供特定结果,例如突出显示第二个字符串中的额外单词、错误单词和跳过单词。例如

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=“这是javascript语言中的第一个原始字符串。”
var y=“这不是语言中的第一个组织字符串。” diff=错误的word=“org”
Extra word=“not”
跳过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++;
             }
            }
        } 
     }
 }
var x=“这里是字符串的一些值”;
var y=“这是一些val字符串”;
var k=0;
var SkipWrd=“”;

对于(var i=0;i我使用了逐字比较法,而不是您使用的逐字比较法。总体逻辑类似。 下面的代码适用于您的示例,但还有更多可能出错的情况

var x=“这是javascript语言中的第一个原始字符串。”;
var y=“这不是语言中的第一个组织字符串。”;
x=x.分割(“”);
y=y.分割(“”);
var i=0,j=0;
而(1){
如果(!x[i]| |!y[j])中断;
如果(x[i]==y[j]){
i++;
j++;
继续;
}
如果(x[i]==y[j+1]){
log('Extra word:',y[j]);
i++;
j+=2;
继续;
}
如果(x[i+1]==y[j]){
log('Skip word:',x[i]);
i+=2;
j++;
继续;
}
如果(x[i+1]==y[j+1]){
log('错误的单词:',y[j]);
i++;
j++;
继续;
}

}
您可以使用
拆分(“”)
对每个字符串执行函数,将其转换为数组。然后遍历每个元素,并进行相应的比较,以找到所需的结果。如果您希望有人为您编写代码,那么您就错了。@Vivek我需要帮助以使我的代码更强大。请再次检查您现在发布的尝试。而不是ks,它解决了我的问题有点像这个答案,但是你可以通过删除
continue
语句,使第一个语句之后的每个
if
变成一个
if else
,这样在每次迭代中只运行一个。