2016-05-05 11 views
0

Ich habe zwei FrageWie zwei Zeichenfolge überprüfen gleiche Zeichen inklusive Sonderzeichen

1) Wie kann ich zwei Shuffle-Zeichenfolge überprüfen gleichen Zeichen Wie ich

haben
var str1 = "[email protected]#//1"; 
var str2 = "@#//sanra1"; 

sollte return true

Wenn dies nicht der gleiche Zeichen haben dann

2), die die Zeichen nicht in der zweiten Stachel existieren, sind

var str1 = "[email protected]#//123"; 
var str2 = "@#//sanra"; 

Sollte das Rück 123

Ich weiß, dass ich erste Frage Antwort von

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

Aber nicht sicher erhalten können, wie Zeichen bekommen nicht mit dem zweiten String abgestimmt

+0

Ich habe zwei String muss ich beide Zeichenfolge überprüfen gleichen Werte oder nicht, wenn nicht gleiche Zeichen haben, dann müssen bekommen, was sind die Zeichen nicht mit dem zweiten String – Thorin

+0

Frage mached ist in sich interessant, aber ein bisschen Mühe würde einen langen Weg gehen. – Mihai

+0

Ich weiß, ich kann zwei Zeichenfolgen wie passen: str1.length === str2.length && str1.split (""). Sort(). Join() == str2.split (""). Sort() .Beitreten(); – Thorin

Antwort

1

eine while-Schleife scheint eine vernünftige Lösung unter Verwendung von:

var str1 = "[email protected]#//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)

die resultierende Anordnung stellt die Buchstaben von str2 nicht abgestimmt in str1

1

diese leeren String zurück, wenn Zeichensatz in beide Saiten sind gleich.

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("[email protected]#//123", "@#//sanra"); 

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

1

Betrachten dieser Implementierungen:

1)

var str1 = "[email protected]#//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 = "[email protected]#//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)); 
0

Dieser Code Sie Ausgabe nach Ihrem Wunsch bekommen kann helfen.

var str1 = "[email protected]#//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<len; i++) { 
 
    
 
    for(var j = a1.length-1; j>=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);

Verwandte Themen