如何检查两个字符串是否包含特殊字符的相同字符

我有两个问题

1)我怎样才能检查两个shuffle字符串是否有相同的字符

var str1 = "ansar@#//1"; var str2 = "@#//sanra1"; 

应该回归真实

2)如果没有相同的字符,那么第二次刺中不存在的字符

 var str1 = "ansar@#//123"; var str2 = "@#//sanra"; 

应该返回123

我知道我可以得到第一个问题的答案

 str1.length===str2.length && str1.split("").sort().join() == str2.split("").sort().join(); 

但不确定如何使字符与第二个字符串不匹配

使用while循环似乎是一个合理的解决方案:

 var str1 = "ansar@#//1"; var str2 = "@#//sanra12"; s1 = str1.split(''); s2 = str2.split(''); var i = s1.length + 1; while (i--) { if (s2.indexOf(s1[i]) >= 0) s2.splice(s2.indexOf(s1[i]), 1); } console.log(s2) 

考虑这些实现:

1)

 var str1 = "ansar@#//1"; var str2 = "@#//sanra1"; function first(str1, str2) { return Array.prototype.every.call(str1, function(c) { return str2.indexOf(c) > -1; }, this); } console.log(first(str1, str2)); 

2)

 var str1 = "ansar@#//123"; var str2 = "@#//sanra"; function second() { return Array.prototype.filter.call(str1, function(c) { return str2.indexOf(c) === -1; }, this).join(''); } console.log(second(str1, str2)); 

如果两个字符串中的字符集相同,则返回空字符串。

 function findDiff (str1, str2) { var diff = ''; if (str1.length > str2.length) { var search = str1; var compare = str2; } else { var search = str2; var compare = str1; } for (var i = 0; i < search.length; i++) { var symbol = search[i]; if (compare.indexOf(symbol) === -1) { diff += symbol; } } return(diff); } findDiff("ansar@#//123", "@#//sanra"); 

https://jsfiddle.net/tadaspaplauskas/pn7jnj8e/

此代码可以帮助您根据自己的意愿获得输出。

 var str1 = "ansar@#//g123"; var str2 = "@#//sanraD"; function strDiff(s1, s2){ var t,inter,a1,a2; a1 = s1.split(''); a2 = s2.split(''); t = a2, a2 = a1, a1 = t; inter = a1.filter(function (e) { if (a2.indexOf(e) !== -1) return true; }); for (i=0, len=inter.length; i=0;j--) if (a1[j] === inter[i]) a1.splice(j, 1); for(var k = a2.length-1; k>=0; k--) if (a2[k] === inter[i]) a2.splice(k, 1); } if((a1.join('')+a2.join('')).length > 0) return(a1.join('')+a2.join('')); else return "True"; } var result = strDiff(str2,str1); alert(result);