10

Gibt es eine Möglichkeit,% Übereinstimmung zwischen 2 Strings zu berechnen?gibt es eine Möglichkeit,% Übereinstimmung zwischen 2 Strings zu berechnen

Ich habe eine Situation, wo es erforderlich ist, Übereinstimmungen zwischen 2 Strings zu berechnen, wenn es 85%

Spiel dann werde ich 2 Tabellen kombinieren, ich den Code geschrieben haben, für die Kombination von 2 Tabellen

meine Probe Zeichenketten sind:

var str1 = 'i love javascript'; 
var str2 = 'i love javascripttt'; 

var matchPer = match(str1,str2); // result might be 80% , 85%, 90% ,95% etc 
+3

Was für die Berechnung des Prozent Ihre Logik ist? –

+5

Es gibt nicht nur einen Weg, es gibt viele Wege. Haben Sie eine Richtlinie, um eine auszuwählen? Was bedeutet "85% Übereinstimmung" eigentlich für dich? – hobbs

+8

'1 - levenshtein (str1, str2)/max (str1.length, str2.length)' scheint mir eine vernünftige Metrik zu sein, aber vielleicht möchtest du Damerau-Levenshtein (was den Unterschied zwischen "Bacon" und "Baocn" berücksichtigt) 1 oder 2), oder Hamming-Abstand wie in Ala Eddine JEBALI's Antwort, die Ergänzungen und Streichungen nicht verzeiht ("Bananen" und "Ananas" haben einen Levenshtein-Abstand von 1 aber eine Hamming-Distanz von 6). Sind sie 14% ähnlich oder 86% ähnlich?) – hobbs

Antwort

10

So etwas wie das?

var str1 = 'i love javascript'; 
 
var str2 = 'i love javascripttt'; 
 

 
function match(str1, str2){ 
 
    var tmpValue = 0; 
 
    var minLength = str1.length; 
 
\t if(str1.length > str2.length){ 
 
\t \t var minLength = str2.length; 
 
\t } \t 
 
    var maxLength = str1.length; 
 
\t if(str1.length < str2.length){ 
 
\t \t var maxLength = str2.length; 
 
\t } 
 
    for(var i = 0; i < minLength; i++) { 
 
     if(str1[i] == str2[i]) { 
 
      tmpValue++; 
 
     } 
 
    } 
 
    var weight = tmpValue/maxLength; 
 
    return (weight * 100) + "%"; 
 
} 
 

 
var matchPer = match(str1,str2); 
 
console.log(matchPer); //outputs: 89.47% 
 
console.log(match("aaaaa", "aaaaa")); //outputs: 100% 
 
console.log(match("aaaaa", "aXaaa")); //outputs: 80% 
 
console.log(match("aaaaa", "aXXaa")); //outputs: 60% 
 
console.log(match("aaaaa", "aXXXa")); //outputs: 40% 
 
console.log(match("aaaaa", "aXXXX")); //outputs: 20%

+13

Bitte exoplain was das ist; Juice Dump Code nicht. –

+3

Dies ist der https://en.wikipedia.org/wiki/Simple_matching_coefficient – JollyJoker

Verwandte Themen