【问题标题】:compare string and return true if there is small spelling mistake比较字符串,如果有小的拼写错误返回真
【发布时间】:2016-07-07 07:50:26
【问题描述】:

我有将用户输入与 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 或任何其他框架中使用它的功能?

祝你有美好的一天:)

【问题讨论】:

  • 什么是小错误?六分之一?
  • @NinaScholz 是的,你可以这么说

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


【解决方案1】:

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) {
  // ...
}

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      没有我能想到的框架。但是,您可以做的一件事是自己创建一个函数,如下所示:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-04-03
        • 1970-01-01
        • 1970-01-01
        • 2014-11-28
        • 1970-01-01
        • 2016-01-29
        相关资源
        最近更新 更多