2016-03-20 3 views
-1

Ich habe Funktion, die die Benutzereingabe mit Zeichenfolge in XML-Datei vergleichen, aber wenn es Leerzeichen oder Rechtschreibfehler gibt die Rückgabe false ich möchte es True zurückgegeben, wenn der Unterschied ein Zeichen istVergleich String und Rückgabe True, wenn es kleine Rechtschreibfehler ist

//xml file like this 
<xmlString>HELLO</xmlString> 
<result>somthing</result> 

und Skriptdatei wie diese

var userInput="Jello"; 
if (userInput.toUpperCase().indexOf(xmlString) >= 0){ //this should return true and execute 

     return $(result).text();         
     } 

, wie kann ich das tun? Gibt es eine Funktion, die ich aus jquery oder einem anderen Framework verwenden kann?

hat einen großen Tag :)

+1

Was ist ein kleiner Fehler? einer von sechs? –

+0

@NinaScholz Ja das kannst du sagen –

Antwort

0

keine Gerüste Es gibt ich mir vorstellen kann. eine Sache, die Sie tun könnten jedoch ist eine Funktion, sich ein wenig wie diese machen:

function findCloseMatch(input) { 
    var i = 0; 
    var numberOfMismatches = Math.ceil(input.length/6); 
    while(i < input.length) { 
     // loop through xml entries { 
      if (input[i] != entry[i]) numberOfMismatches++; 
      // some if statement checking whether the match is better than the previous best one (maybe with number of matching chars) 
     } 
    } 
} 

EDIT: mit Post zuletzt gescheitert, sorry :)

2

https://en.wikipedia.org/wiki/Hamming_distance

In der Informationstheorie, die Hamming-Distanz zwischen zwei Strings von gleicher Länge ist die Anzahl der Positionen, an denen die entsprechenden Symbole unterschiedlich sind.

function hammingDistance(str1, str2) { 
    var dist = 0; 
    str1 = str1.toLowerCase(); 
    str2 = str2.toLowerCase(); 
    for (var i = 0, j = Math.max(str1.length, str2.length); i < j; i++) { 
    if (!str1[i] || !str2[i] || str1[i] !== str2[i]) { 
     dist++; 
    } 
    } 
    return dist; 
} 

Sie wollen einen anderen Charakter ermöglichen, so können Sie testen, ob der Hamming-Distanz 1 oder darunter ist.

if (hammingDistance("Jello", "HELLO") <= 1) { 
    // ... 
}