比较字符串,如果拼写错误,则返回true

时间:2016-03-20 22:12:30

标签: javascript jquery xml-parsing search-engine bots

我的函数将用户输入与xml文件中的字符串进行比较但是如果有空格或拼写错误则返回false我希望它返回true如果差异是一个字符

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

和这样的脚本文件

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

         return $(result).text();                                   
         }

我该怎么做?有没有我可以在jquery或任何其他框架中使用它的函数?

度过美好的一天:)

3 个答案:

答案 0 :(得分:2)

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

  

在信息论中,两个弦之间的汉明距离   等长是相应的位置数   符号是不同的。

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;
}

你想允许一个不同的角色,所以你可以测试汉明距离是1还是以下。

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

答案 1 :(得分:1)

尝试使用模糊字符串匹配库,例如 https://github.com/xdrop/fuzzywuzzy

基于FuzzyWuzzy Python的Java模糊字符串匹配 算法。该算法使用Levenshtein距离进行计算 字符串之间的相似性。

答案 2 :(得分:0)

没有我能想到的框架。但是,你可以做的一件事就是自己做一个像这样的功能:

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)
         }
     }
}

编辑:上次失败,抱歉:)